ドキュメンテーション

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

waitfor

実行をブロックして条件を待機

説明

waitfor(obj) は、指定されたオブジェクトが閉じる (削除される) までステートメントの実行をブロックします。オブジェクトが存在しなくなると、waitfor は戻り、実行を再開できるようになります。オブジェクトが存在しない場合、waitfor は直ちに戻ります。

waitfor(obj,propname) はオブジェクトのプロパティ名を指定し、そのプロパティの値が変わるかオブジェクトが閉じるまで実行をブロックします。たとえば、waitfor(mytable,'Data') は、mytable'Data' の値が変わるまで実行を一時停止します。指定したプロパティ名が無効の場合、実行はブロックされたままとなります。

waitfor(obj,propname,propvalue) は、実行が再開されるためにプロパティが取らなければならない値を指定します。指定されたプロパティが既に propvalue と等しい場合、waitfor は直ちに戻り、実行が再開されます。

すべて折りたたむ

警告ダイアログを作成して閉じるのを待機します。waitfor の後のコマンドは、ダイアログを閉じるまで実行されません。

mydlg = warndlg('This is a warning.', 'A Warning Dialog');
waitfor(mydlg);
disp('This prints after you close the warning dialog.');

ユーザーがチェック ボックスをオンにするのを待ってから、テーブルにデータを追加します。チェック ボックスの Value プロパティは、選択しないと 0、選択すると 1 です。

t = uitable;
c = uicontrol('Style','checkbox','String','Add data');
c.Position = [320 100 80 20];
waitfor(c,'Value');
t.Data = magic(5);

ユーザーが編集をやめて Figure 内の他の場所をクリックすると、テキスト フィールドの背景色が変更されます。テキスト フィールドがフォーカスを失うと、Editing プロパティは 'on' から 'off' に変更されます。

txt = text(.5,.5,'Edit text and click');
txt.Editing = 'on';
txt.BackgroundColor = [1 1 1];

waitfor(txt,'Editing','off');
txt.BackgroundColor = [1 1 0];

入力引数

すべて折りたたむ

オブジェクト (AxesTextPanelButtonGroupTableUIControl オブジェクトなど)。オブジェクトは、関数 figure または関数 uifigure で作成された Figure オブジェクトの子である場合も、Figure オブジェクト内のコンテナーの子である場合もあります。

プロパティ名。文字ベクトルまたは string スカラーとして指定します。この引数を使用して obj のプロパティを指定します。実行を再開するにはその値が変わらなければなりません。

プロパティ値。propname に関連付けられた有効なプロパティ値として指定します。この引数を使用して、実行が再開されるためにプロパティが取らなければならない特定値を指定します。

ヒント

  • waitfor の実行中に Figure が閉じられると、存在しなくなったオブジェクトにコードがアクセスしようとするため、エラーが発生します。このエラーは、waitfortry/catch ブロック内に囲むことで対処することができます。

アルゴリズム

通常、プログラムや Simulink® モデルの実行継続を妨げるために waitfor が使用された場合でも、コールバックは実行できます。たとえば、ユーザー アクション (マウス ボタンを押すなど) に応答するコールバックは、waitfor が呼び出された場合でも実行が可能です。

waitfor は、入れ子関数の呼び出しをブロックするために使用することもできます。たとえば、関数 waitfor の実行中に実行されるコールバックは、waitfor を呼び出すこともできます。

UI コンポーネントのコールバック関数が関数 waitfor を実行中の場合、そのコールバックは、そのコンポーネントの Interruptible プロパティ値がどう設定されているかに関係なく中断されることがあります。

R2006a より前に導入