エディットテキストの​フォーカスを失ったと​きに、特定のコールバ​ック処理を実行できま​せんか?

11 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 8 Sep 2017
Uicontrol の エディタブル テキスト ボックスから、マウスを別のオブジェクトに移したタイミングで、特定の処理を実行したいと思います。フォーカスが移ったことを検知することができるか、教えてください。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 8 Sep 2017
エディタブル テキスト ボックス の Callback は、 
・エディットテキストから別のコンポーネントにフォーカスが移動したとき 
・エディットテキストにフォーカスがある状態で Enter キー(複数行入力対応の場合、Enter + Ctrl )が入力されたとき 
に実行されます。 
フォーカスが移ったときのみに動作するコールバック関数はありませんが、代替案として、Callback 関数内で、最後に入力されたキーを識別し、Enter キーでなければ、 フォーカスが移ったと判断する方法が考えられます。 
以下のサンプルコードは、その例です。
エディタブル テキスト ボックスの Callback 関数内で Figure の CurrentCharacter プロパティを用いて、最後に入力されたキーを識別します。これにより、エディタブル テキスト ボックス 内で Enter キーを押下する場合と、フォーカスを移す場合で、コールバックの処理が変わります。
 
(edit_off_samp.m)
function edit_off_samp
h_figure = figure;
h_edit = uicontrol('Style','edit','Callback',@edit_callback); % エディタブル テキスト ボックス作成
function edit_callback(src,event)
% コールバック関数の定義
CK = get(h_figure, 'CurrentCharacter'); % 最後のキーの取得
if isequal(double(CK),13) % Enter キーの場合
disp('Pressed Enter Key')
else
disp('Focus off')
end
end
end

More Answers (0)

Categories

Find more on Application Deployment in Help Center and File Exchange

Products


Release

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!