Matlab ユーザー インターフェイスに編集ボックスを挿入しましたが、ユーザーが入力できる文字数を制限したいと考えています。編集ボックスには明らかなプロパティはありません (「最大文字数」など)。コールバック関数を使用して、編集ボックスの現在の文字列サイズが設定した制限よりも大きいかどうかを確認し、最初の文字を切り捨てましたが、編集ボックスの外側をクリックしてからもう一度内側をクリックしたときにのみコールバックが機能しました。
これを行う方法について何か考えはありますか?
前もって感謝します。
編集済み
Amro の提案に従って、編集ボックスの KeyPressFcn コールバック内に検証コードを配置してみました。次のコードを入力しました。
function prefix_edit_KeyPressFcn(hObject, eventdata, handles)
text = get(hObject, 'String');
if length(text) > 15
set(hObject, 'String', text(1:15));
end
問題は、編集ボックスの文字列が変更されるのは、何かを入力し、Enter キーを押してから、もう一度何かを入力しようとしたときだけです。KeyPressFcn は、Enter キーを押した後にのみ呼び出されるようです (Amro が提案したフォーラムの投稿で言及されているように)。
フォーラムで提案された解決策は、そのような単純なタスクに対しては複雑すぎるようです。確かにもっとエレガントな方法があるはずです...