このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
コンポーネント間でコールバックを共有すると、アプリで複数の操作方法を提供する場合に便利です。たとえば、ボタンをクリックしたときと、編集フィールドで Enter キーを押したときのアプリの反応を同じにすることができます。
この例では、コールバックを共有する 2 つの UI コンポーネントが含まれるアプリを作成する方法を説明します。このアプリでは、指定した数のレベルをもつ等高線図が表示されます。編集フィールドで値を変更する場合、Enter キーを押すか、[Update Plot] ボタンをクリックしてプロットを更新できます。
App Designer で、[座標軸] コンポーネントを [コンポーネント ライブラリ] からキャンバスにドラッグします。以下の変更を行います。
タイトルをダブルクリックして、Select
Contours of Peaks Function
に変更します。
X 軸と Y 軸のラベルをダブルクリックし、Delete キーを押して削除します。
[編集フィールド (数値)] コンポーネントを座標軸の下からキャンバスにドラッグします。以下の変更を行います。
編集フィールドの隣のラベルをダブルリックし、Levels:
に変更します。
編集フィールドをダブルクリックして既定値を 20
に変更します。
編集フィールドの近くの [ボタン] コンポーネントをキャンバスにドラッグします。次に、そのラベルをダブルクリックし、Update
Plot
に変更します。
ボタンをクリックした際に実行されるコールバック関数を追加します。[Update Plot] ボタンを右クリックし、[コールバック] 、 [ButtonPushedFcn コールバックの追加] を選択します。
App Designer が [コード ビュー] に切り替わります。次のコードを UpdatePlotButtonPushed
コールバックの本体に貼り付けます。
Z = peaks(100); nlevels = app.LevelsEditField.Value; contour(app.UIAxes,Z,nlevels);
次に、コールバックを編集フィールドと共有します。[コンポーネント ブラウザー] で、app.LevelsEditField
コンポーネントを右クリックし、[コールバック] 、 [既存のコールバックを選択] を選択します。[コールバック関数の選択] ダイアログ ボックスが表示されたら、[名前] ドロップダウン メニューから [UpdatePlotButtonPushed] を選択します。
このコールバックを共有すると、編集フィールドで値を変更し、Enter キーを押した後にプロットを更新できます。または、値を変更し、[Update Plot] ボタンを押すことができます。
次に、座標軸の縦横比と範囲を設定します。[コンポーネント ブラウザー] で、app.UIAxes
コンポーネントを選択します。次に、[インスペクター] タブで次の変更を行います。
[PlotBoxAspectRatio] を 1,1,1
に設定します。
[XLim] と [YLim] を 0,100
に設定します。
[実行] をクリックしてアプリを保存し、実行します。
コンポーネントに別のコールバックを割り当てるには、[コンポーネント ブラウザー] でそのコンポーネントを選択します。次に、[コールバック] タブをクリックし、ドロップダウン メニューから別のコールバックを選択します。ドロップダウンには、既存のコールバックのみが表示されます。
コンポーネントと共有されているコールバックを切断するには、[コンポーネント ブラウザー] でそのコンポーネントを選択します。次に、[コールバック] タブをクリックし、ドロップダウン メニューから [<コールバックなし>] を選択します。このオプションの選択により、コンポーネントからコールバックのみが切断されます。コードから関数定義が削除されることはなく、また他のコンポーネントからコールバックが切断されることもありません。コールバックを切断した後、コンポーネントの新しいコールバックを作成するか、コンポーネントをコールバック関数なしの状態のままにできます。
コールバック関数の定義をコードから削除するには、[コード ブラウザー] の [コールバック] タブに移動し、削除するコールバックを右クリックします。次に、コンテキスト メニューから [削除] を選択します。