Q70:テーブルのフォーカス設定について、マウスで他のコントロールやセルに移動した場合に、フォーカスの設定が優先されないのか元の位置にもどすことができません。
Q70-1:
関連ファイル「入力サンプル.mzax」のサンプルのように、伝票入力で商品コードを入力すると商品名を表示するようにしています。商品コードが間違っている場合、エラーメッセージを表示して元の商品コードのセルにもどしたいのですが、マウスで他のコントロールやセルに移動した場合にフォーカスの設定が優先されないのか元の位置にもどすことができません。どのような方法をとればこれを回避できるでしょうか?サンプルはAとBという商品が登録してありますので、商品コードの欄にAかBを入力してお試しください。
関連ファイル:入力サンプル.mzax (※このファイルは、ZIP形式に圧縮してあります。)
A70-1:
マウスで他のセルやコンポーネントをクリックした際のフォーカスの移動が[テーブル]のデータ更新イベントに繋がる一連の処理の後に行われるため、一旦元のセルへのフォーカス移動の処理が行われた後、すぐにまたクリックされた箇所へフォーカスが移動してしまいます。
これを回避するには[スレッドアロケーター]を使って、別スレッドで処理を行わせることが考えられます。
処理を追加したファイルを関連ファイル「入力サンプル-A.mzax」に掲載致します。ご参考になれば幸いです。
(初期化処理の際「編集中のセルの値を確定する」処理も追加しました)
関連ファイル:入力サンプル-A.mzax (※このファイルは、ZIP形式に圧縮してあります。)
備考:「テーブル」の「Q&A24」にも掲載。