ドキュメンテーション

目次

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

guidata

GUI データの保存または取得

構文

guidata(object_handle,data)
data = guidata(object_handle)

説明

guidata(object_handle,data) は変数 data を GUI データとして保存します。object_handle が Figure のハンドルでない場合、オブジェクトの親 Figure が使用されます。data は、任意の MATLAB® 変数ですが、通常は、必要に応じて新しいフィールドの追加が可能な構造体とします。

関数 guidata は常に、1 つの変数のみを管理できます。guidata(object_handle,data) を続けて呼び出すと、前回作成した GUI data に上書きされます。

    GUIDE による関数 guidata の使用   GUIDE は、関数 guidata を使用して handles 構造体の保存および維持を行います。GUIDE GUI コード ファイルで handles 構造体を上書きしないでください。上書きすると GUI が動作しなくなります。GUI の handles 以外のデータを保存する必要がある場合には新しいフィールドを handles 構造体に追加して、それらのデータをそこに入れてください。

data = guidata(object_handle) は前回保存したデータを返します。保存したデータが存在しない場合は空行列を返します。

関数 guidata で管理されるデータを変更するには、次のように操作します。

  1. コマンド data = guidata(object_handle) を使用して、データのコピーを取得します。

  2. data に必要な変更を加えます。

  3. コマンド guidata(object_handle,data) を使用して、data の変更内容を保存します。

関数 guidata は、以下のように、アプリケーション開発者に Figure のアプリケーション データへの便利なインターフェイスを提供します。

  • ユーザーのソース コードを通してアプリケーション データ用に、ハードコード化されたプロパティ名を作成したり、保持したりする必要はありません。

  • コンポーネントのハンドル (関数 gcbo から返す) を使用して、ローカル関数のコールバック ルーチン内からデータにアクセスでき、Figure のハンドルを検索する必要はありません。

GUIDE を使用しない場合、関数 guidata は、GUI 内のすべてのコンポーネントのハンドルを含む構造体を作成する関数 guihandles と組み合わせると特に便利です。

この例では、関数 guidata を呼び出して、アプリケーション コード ファイルの初期化セクションからの GUI Figure のアプリケーション データが含まれている構造体を保存します。最初のセクションでは、ユーザーが手動で作成した GUI の内部でこれを実行する方法を示します。2 番目のセクションでは、テンプレート コード ファイルの作成に GUIDE を使用する際のコードの違いを示します。GUIDE では、すべてのコールバック ローカル関数の引数として handles を指定するので、関数 guidata を呼び出して取得する必要はありません。ただし、構造体への変更を保存するには、関数 guidata を呼び出す必要があります。

プログラムされた GUI での関数 guidata の使用

関数 guihandles を呼び出すと、コードによって追加データを入れる構造体が作成されます。構造体には関数が呼び出されたときに Figure によって使用されるすべてのハンドルが含まれ、各オブジェクトの Tag プロパティに基づいてフィールド名が生成されます。

% Create figure to use as GUI in your main function or a local function
figure_handle = figure('Toolbar','none');
% create structure of handles
myhandles = guihandles(figure_handle); 
% Add some additional data as a new field called numberOfErrors
myhandles.numberOfErrors = 0; 
% Save the structure
guidata(figure_handle,myhandles) 

ローカル コールバック関数からデータを再び呼び出して変更し、Figure 内の構造体を置き換えることができます。

function My_Callback()
% ...
% Get the structure using guidata in the local function
myhandles = guidata(gcbo);
% Modify the value of your counter
myhandles.numberOfErrors = myhandles.numberOfErrors + 1;
% Save the change you made to the structure
guidata(gcbo,myhandles) 

GUIDE GUI での関数 guidata の使用

GUIDE を使用する場合は、GUI のハンドルが含まれている handles 構造体が GUIDE によって生成されるので、関数 guihandles を呼び出して構造体を作成する必要はありません。ユーザー独自のデータを追加できます。たとえば、GUIDE によって作成されたテンプレート OpeningFcn 内からのデータなどです。

% --- Executes just before simple_gui_tab is made visible.
function my_GUIDE_GUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to simple_gui_tab (see VARARGIN)
% ...

% add some additional data as a new field called numberOfErrors
handles.numberOfErrors = 0;
% Save the change you made to the structure
guidata(hObject,handles)

コールバックが実行されているオブジェクトを参照するために、関数 gcbo の代わりに入力引数 hObject を使用することに注意してください。

プッシュ ボタン コールバック内のフィールド numberOfErrors にアクセスする必要があると仮定します。コールバック コードは次のようになります。

% --- Executes on button press in pushbutton1.
function my_GUIDE_GUI_pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% ...

% No need to call guidata to obtain a structure;
% it is provided by GUIDE via the handles argument
handles.numberOfErrors = handles.numberOfErrors + 1;
% save the changes to the structure
guidata(hObject,handles)
この情報は役に立ちましたか?