私たちの主な目的は、日々、開発者の生活を楽にすることです。リストボックスは、この目的を果たすために、4Dで最も使用され、強力なフォームオブジェクトの1つです。リストボックスが多くのイベントを発生させることは周知の事実ですが、だからこそ、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の 属性でカラムをソートする。
Formevent:= : ( = ) ( . . ="lastname") := . . ( . . +", firstname")FORM Event
Case of
Form event codeOn Header Click
ifFormeventcolumnName
FormemployeesFormemployeesorderByFormeventcolumnName
End if
End case
DISPLAY DETAILS イベントについて
詳細表示時イベントがトリガーされた場合、追加の関連プロパティ( isRowSelected など)がコマンドによって返されるようになりました。 Form eventコマンドによって返されるようになりました。これは、リストボックスの行の外観を管理するのに便利です。
以下は、リストボックスのMeta info expressionプロパティに設定したメソッド(setColor)の例です。
setColorメソッド。
C_OBJECT$metaCase of
($event;$0;$meta)
$event :=FORM Event
:=New object
: ($event.code=On Display Detail)
If ($event.isRowSelected)//set color when row is selected $meta .fill:="lightblue"
End if
End case
$0 :=の
ようになります。$meta
そして、行が選択されたときのリストボックスの様子は次のとおりです。
マウス移動時イベント
また、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"}
リストにマウスを乗せると、以下のようなイベントが発生します。