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

조회 수: 12 (최근 30일)
MathWorks Support Team
MathWorks Support Team 2017년 9월 8일
답변: MathWorks Support Team 2017년 9월 8일
Uicontrol の エディタブル テキスト ボックスから、マウスを別のオブジェクトに移したタイミングで、特定の処理を実行したいと思います。フォーカスが移ったことを検知することができるか、教えてください。

채택된 답변

MathWorks Support Team
MathWorks Support Team 2017년 9월 8일
エディタブル テキスト ボックス の 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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Application Deployment에 대해 자세히 알아보기

제품


릴리스

R2017a

Community Treasure Hunt

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

Start Hunting!