2012-03-22 7 views
5

これは、MATLABでGUIを作成する私の最初の試みです。フォーカスがテキスト編集から他のオブジェクトに移動したときを検出する方法はこれまでにありませんでした。そのような機能が必要なので、ユーザーの入力を「現場で」テストし、誤った方法で入力が形成された場合は、テキスト編集の背景色を赤に変更することができます。テキスト編集オブジェクトからフォーカス損失を検出するにはどうすればよいですか?

言い換えれば、エンドユーザがテキストエディットで自分の表現を書くことができ、タブを押して次のテキスト編集に移動すると同時に、赤い背景入力に何らかの問題がある場合の最初のテキスト編集で。

ユーザーの入力を確認するためのいくつかの方法が考えられましたが、上記のように便利ではありません。このようなことをどうすれば実装できますか?

答えて

7

フォーカスを編集可能なテキストボックスから別のuicontrolオブジェクトに移動するには、編集可能なテキストボックスのcallback functionが呼び出されます。したがって、テキストをチェックし、編集可能なテキストuicontrolのコールバック関数の問題をユーザーに警告するためのコードを記述するだけで済みます。

  • は別のコンポーネント、メニューバー、またはGUIの背景をクリックする:the documentationはuicontrolのためのコールバックは、これらの他の条件の下で起動されることを述べていること

    注。

  • 1行の編集可能なテキストボックスの場合は、を入力してください。と入力してください。 + を入力しCtrlキーを押し、複数行の編集可能なテキストボックスの

  • 、。

例えば、ここに文字列が'yes'または'no'、または赤のどちらかである場合、文字列は他の何かである場合は、デフォルトのグレー値にテキストの背景色を設定します非常に単純なコールバックの実装です:

function callback_fcn(hSource, eventData) 
    if ismember(get(hSource, 'String'), {'yes', 'no'}) 
    set(hSource, 'BackgroundColor', [0.941176 0.941176 0.941176]); 
    else 
    set(hSource, 'BackgroundColor', 'r'); 
    end 
end 
+0

lol、とても単純です...これまで、私は、コールバック関数がコマンドボタンが押されたときに呼び出されたと考えました。どうもありがとうございました! – niels

関連する問題