カラムのタブ順をスクリプトで設定すると正しくフォーカスが移動しない
2021/02/05
データウィンドウ内のカラムに対してタブ順をスクリプトで設定した場合、Tab キー押下時のフォーカス移動が正しく動作しない事象が報告されています。
Bug ID | 1654 | ||||||
---|---|---|---|---|---|---|---|
Product | PowerBuilder EN/JP | ||||||
ステータス | Appeon にて検証中 | ||||||
発生バージョン | EN | 12.6以前 | 2017 | 2017 R2 | 2017 R3 | 2019 | 2019 R2 |
JP | 12.6以前 | - | 2017 R2 | 2017 R3 | - | - |
※ :発生バージョン :解決済み、未発生 :未確認
詳細
データウィンドウにカラムとコントロールが配置されてそれぞれにタブ順が設定されている場合、スクリプトから任意のカラムのタブ順を 0 に変更すると、Tab キーでそのカラムにフォーカス移動するタイミングでフォーカスが次の行に移動します。最終行の場合はデータウィンドウから外れて、ウインドウ上の別のコントロールに移動します。
例えば、dw_1 にカラム “col_a”、 “col_b”、 “col_c”、ボタンコントロール “btn_a” が配置されて、タブ順が 10、20、30、40 で設定されているとします。オープン時に “col_b” のタブ順を 0 に変更した場合、Tab キーでフォーカス移動させると設定上 “col_a”、 “col_c”、 “btn_a” の順に移動するはずが、 “col_a” の後に dw_1 からフォーカスが外れてウインドウ上の別のコントロールに移動します。
回避策
- GetFullState 関数と SetFullState 関数を実行する
- スクリプトでタブ順を変更した後で GetFullState 関数を呼び出して現在のデータウィンドウの状態を保持し、その後で SetFullState 関数を呼び出して保持した状態に復元することで、フォーカスがタブ順通りに移動します。