タブキーの挙動について

10 件の投稿を閲覧中 - 1 ~ 10 件(全 10 件)
  • 著者
    投稿
  • #6792
    伊予研究会
    一般参加者

    タブキーの挙動についてご教示ください。
    1. 添付ファイルを実行すると、タブが数値入力フィールドID2に来ています。これを一つ前の位置にし、数値入力フィールドのバックグラウンド色を初期値の黄色にしたい。そして、1回タブを押さえるとID2に移動したい。
    2. タブキーを連続で押していくと、数値入力カウンタでは2回押さないとキー入力(数値入力)ができない。これを1回にしたい。

    よろしくお願いいたします。

    添付ファイル:
    #6794
    MZPlatformユーザー会
    サイト管理者

    お問い合わせありがとうございます。

    1.[フレーム]表示時に、基本的には一番目の配置位置にあるコンポーネントにフォーカスが当たるようになっているため、[数値入力フィールド(ID2)]のフォーカスイベントに繋がった処理がすぐに実行されています。これは、イベント番号を設定してフォーカス取得時と消失時の処理を分けることにより、動作を変更することができます。
    『ひとつ前の位置にする』ということですが、もし入力カーソル位置を数字の後ろに持っていくという意味でしたら、[数値入力フィールド]では「setCaretEnd()」というメソッドで入力位置を終端に移動することができます。

    2.[数値入力カウンター]の場合、入力状態になるには入力のフィールドにフォーカスが当たる必要があります。コンポーネントの配置位置が変わらないという前提であれば、前のコンポーネントのフォーカスイベント(フォーカス消失)に次の[数値入力カウンター]のメソッド「入力フォーカスを設定する()」を設定することが考えられます。
    また、[数値入力カウンター]には「setCaretEnd()」がありませんので、メソッド「selectAll()」で選択状態にすることで、すぐにキーボードからの入力内容変更が可能です。[数値入力フィールド]でも「selectAll()」は使用できます。

    以上の内容を、動作確認のためお送りいただいたファイルに設定してみましたので、ご確認ください。お気づきの点をご連絡いただければ幸いです。どうぞよろしくお願い申し上げます。

    添付ファイル:
    #6796
    伊予研究会
    一般参加者

     サンプルありがとうございました。期待通りの挙動ができました。
     製造現場では紙ベースで日報を記載していましたが、タブレットからデータベースに入力する方法に切り替えています。毎回、前回入力した値と変わらないため、前回の値を表示し変更箇所のみ数値入力する方法に変更しようかと計画しているところでした。
     チェックしたことが分かるようにバックグランドの色を変え、マウスやタブキーで選択すれば数値入力しなくても確認したことかわかるようにバックの色を白に戻すということをしています。
     数値入力フィールド、数値入力カウンタのデータ変更イベントは、直接数値入力した後Enterキーで色を変えるために入れました。他のコンポーネントにフォーカスを移せば色は変わりますが、入力した時点で変わったことが分かるため入れています。
     この度は、ありがとうございました。

    #6842
    伊予研究会
    一般参加者

     コンボボックスも同様にフォーカス消失時にバックグラウンドの色を変更したいのですが、コンボボックスのイベント処理にフォーカスイベントがありません。
     対応方法をご教示ください。

    よろしくお願いいたします。

    #6843
    MZPlatformユーザー会
    サイト管理者

    お問い合わせありがとうございます。
    [コンボボックス]は[実行(設定可)]時に右リック>メニュー>[色]から[選択時の背景色]を設定することができます。この設定の他に必要な動作がありましたら、どうぞ再度ご連絡ください。よろしくお願い申し上げます。

    #6845
    伊予研究会
    一般参加者

     説明不足で申し訳ありませんでした。

     プログラムを立ち上げた時点でコンボボックスのバックグラウンドの色を「黄色」に設定し、コンボボックスを選択してタブキーで他のコンポーネントに移動したときに(コンボのデータは変更しない)バックグランドの色を白にしたい。
     2022年10月6日 6:42 PM投稿のファイルのようにプログラムで操作したいので、コンボボックスのコンポーネントに繋ぐイベント処理の方法をご教示ください。

    #6847
    MZPlatformユーザー会
    サイト管理者

    ご連絡ありがとうございます。

    現在のところ、[コンボボックス]からはフォーカスイベントが発生しないため、次善の策として、[コンボボックス]の一つ前のフォーカス順のコンポーネントのフォーカスイベント(イベント番号0:フォーカス消失時)に[コンボボックス]の「setBackground(Color)」(引数:白色)を繋げることになるかと思います。前のコンポーネントから[コンボボックス]にフォーカスが移った時点で背景色が変わりますが、表示は選択項目が選択色となるので違和感は生じにくいと思われます。
    ただし、[コンボボックス]を複数連続で配置した場合は2番目以降の背景色を変更する手段が無いので、フォーカスイベントが発生するコンポーネントの後に[コンボボックス]、その後ろにフォーカスイベントの発生するコンポーネントの順番に配置する必要があります。

    以上ご不便をお掛けいたしますが、ご検討いただきご不明な点がございましたら、どうぞ再度ご連絡ください。よろしくお願い申し上げます。

    #6848
    伊予研究会
    一般参加者

     ご回答ありがとうございました。
     [コンボボックス]を複数連続で配置する必要があるので、フォーカスイベントが発生するコンポーネントの後に[コンボボックス]、その後ろにフォーカスイベントの発生するコンポーネントの順番に配置しました(添付ファイル)。
     細かい話で申し訳ありませんが、フォーカスイベントのみに使うテキストフィールドは不要なので、編集可否を不可能にしましたところ枠が表示されます。コンポーネントの裏側に隠そうとしましたが、実行時にテキストフィールドが最前面に表示されます。
     テキストフィールドの枠を見えないようにするか、実行時にコンポボックスの後ろにする方法はございますでしょうか。

    よろしくお願いいたします。

    #6850
    MZPlatformユーザー会
    サイト管理者

    ご連絡ありがとうございます。
    少々強引な方法になりますが、サイズを0に設定すると表示しても見えませんが、フォーカスの移動はできるようです。お送りいただいたファイルに設定してみましたので、ご確認ください。
    ご不明な点等ございましたら、再度ご連絡ください。

    #6852
    伊予研究会
    一般参加者

    ありがとうございました。
    サイズを0にする方法もあったのですね。気づきませんでした。

10 件の投稿を閲覧中 - 1 ~ 10 件(全 10 件)
  • このトピックに返信するには、ログインしてください。