私たちの主な目的は、開発者の皆様の業務を日々よりスムーズにすることです。リストボックスは、この目的を果たす4Dで最も頻繁に使用され、かつ強力なフォームオブジェクトの一つです。リストボックスが多くのイベントを発生させることは周知の事実ですが、4D v18 R2では、リストボックスのイベントが発生した際にさらに詳細な情報を返すよう、 Form event コマンドを強化し、リストボックスのイベントが発生した際に、さらに多くの情報を返せるようにしました。
クリックまたはマウスオーバーした行、列、ヘッダーを推測するための、従来の煩雑なコードから解放されたいと思いませんか? それを実現する、よりスムーズでスマートな方法をご紹介します!
イベントに応じて、 Form event コマンドによって、関連する追加のプロパティが返されるようになりました。
いくつかの例を見てみましょう。
ヘッダーのクリックイベント時
ヘッダーオブジェクトの名前、列オブジェクトの名前、および列番号が、 Form event によって返されるようになりました。
以下は、On Header Clickイベントがトリガーされた際に返されるオブジェクトの例です。
{"headerName":"headerLastname", // New property - Header object name
"columnName":"lastname", // New property - Column object name
"column":2, // New property - Column number
"code":42,
"description":"On Header Click",
"objectName":"EmployeesLB"}
たとえば、データクラスの実際の属性名(例:lastname)を列オブジェクト名として設定した場合:

従業員の姓を表示する列のヘッダーをクリックすると、lastnameおよび firstname 属性 に基づいてその列がソートされます:
Form.event:=FORM Event
Case of
: (Form event code=On Header Click)
if (Form.event.columnName="lastname")
Form.employees:=Form.employees.orderBy(Form.event.columnName+", firstname")
End if
End case DISPLAY DETAILS イベント時
On Display Detailsイベントがトリガーされると、 Form event この機能は、リストボックスの行の表示を管理する際に役立ちます。
以下は、リストボックスの「メタ情報式」プロパティに設定されたメソッド(setColor)の例です:

setColorメソッド:
C_OBJECT($event;$0;$meta)
$event:=FORM Event
$meta:=New object
Case of
: ($event.code=On Display Detail)
If ($event.isRowSelected) //set color when row is selected
$meta.fill:="lightblue"
End if
End case
$0:=$meta行が選択された際のリストボックスの表示は以下の通りです:

マウス移動イベント
もう1つよく使われるイベントが「On Mouse Move」イベントです。以下は、このイベントがトリガーされた際に Form event このイベントがトリガーされた際に返されるオブジェクトの例です。
マウスの位置を特定するのに役立つプロパティがすぐに得られます!
マウスがヘッダーの上にホバーすると
Form event コマンドは以下を返します:
{"area":"header", // The mouse is on a header
"areaName":"headerLastname", // Header object name
"column":2, // Column number
"columnName":"lastname", // Colmun object name
"code":37,
"description":"On Mouse Move",
"objectName":"EmployeesLB"}
マウスがセル上にホバーしている場合
Form event コマンドの戻り値:
{"area":"cell", // The mouse is on a cell
"column":1, // Column number
"row":2, // Row number
"columnName":"firstname", // Colmun object name
"code":37,
"description":"On Mouse Move",
"objectName":"EmployeesLB"}リストボックスのイベントは非常に多いため、1つのブログ記事ではすべてを網羅することはできません。各イベントに関する詳細な情報は必ずドキュメントを確認し、さらに詳しく学ぶためにHDIをダウンロードしてください!
現在、この投稿へのコメント機能は利用できません。