マウスイベント

LANSA

マウスイベント


アプリケーションが DirectX を使用している場合、リストコントロール(ツリー、グリッド等)の表示方法に変更があります。中でも注目すべきは、マウスがリスト内の項目の上にある場合、項目がハイライト表示されることです。下の図では、リストの最初の項目が、FocusItem です。5番目の項目上にマウスがあり、それが CurrentItem となっています。

このフォームのコードは、このドキュメントの「サンプルソース」のセクションで確認することができます。

全てのLANSA のリストはリストから対応するフィールド値をマップし、対応する変数へマップする CurrentItem のコンセプトを使用しています。CurrentItem は事実上、リストの中で最後に処理した項目を表しています。これは、クリックされた最後の項目であるか、FocusItem である可能性もありますし、あるいは、Selectlist ループの中で処理された最後の項目かもしれません。

上記と同様な処理は、以下のようなコードで削除ボタンが現在の選択された項目を削除する場合の処理によくあります。

Evtroutine Handling(#Delete.Click)

If (#List.CurrentItem *IsNot *null)

Dlt_Entry Number(#List.CurrentItem.Entry) From_List(#List)

Endif

Endroutine

このコードは実際は CurrentItem 及び FocusItem は全く同一のものであることを示しており、DirectX 以前のほとんどのシナリオに当てはまります。

しかし、 DirectX では、マウスオーバー処理は全てのリストに追加され、すぐに使えるようになります。関連するイベントルーティンが記述されていなくても、ランタイムは何が CurrentItem であるのかを決定し、それが変数の値に反映されます。

Selectlist の外側では、データが破損している可能性があるため、CurrentItem に頼ることはいい方法ではありません。ひとつの選択リストには、常に FocusItem を使用してください。