リストボックス編集したセル内のクリックを管理

Deeplからの自動翻訳

開発者であれば、フォームオブジェクトの内部でイベントを処理することに慣れていることでしょう。最も一般的なのはon clicked フォームイベントで、リストボックスを含むほとんどのオブジェクトで使用することができます。このオブジェクトでは、クリックをリストボックスのレベルまたはカラムメソッドで管理することができます。

そして、4D v18 R6 からは、on clicked フォームイベントが、セルが編集されているかどうかにかかわらず、トリガーされるようになり、コントロールが向上し、インターフェイスが改善されました。

以下は、非常に簡単な例です。

セルが編集されているときに、コンテクストメニューを使って可能な値を表示したいとします。しかし、行が選択されただけでは、その行やセルの色を選択できるようにしたいとします。

これはとても簡単なことです。

on clicked イベントで、セルが編集中かどうかをチェックします。そして、その結果に応じて、メニューを表示します。

If
$choice
// use the .row info present in the Form event object
FORM Event( ) ( ) := ( ; "Alpha") ( ; -1; "Alpha") ( ; "Bravo") ( ; -1; "Bravo") ( ; "Charlie") ( ; -1; "Charlie") := ( ) ( xml-ph-0033@Contextual click // you don't want to do anything if the click is not a contextual click
IfIs editing text // if the text is being edited, suggest input values
$dynMenuCreate menu
APPEND MENU ITEM$dynMenu
SET MENU ITEM PARAMETER$dynMenu
APPEND MENU ITEM$dynMenu SET MENU ITEM PARAMETER$dynMenu
APPEND MENU ITEM$dynMenu
SET MENU ITEM PARAMETER$dynMenu
$choiceDynamic pop up menu$dynMenu
If
)このようにすればいいのです。row APPEND MENU ITEM $choice}:= := ( ; "Blue") ( ; -1; "Blue") ( ; "Green") ($dynMenu; -1; "Green") := ( ) ( #"") (*; .; . ; ) $choice
End if
Else // if the text is NOT being edited, suggest color for the text
$dynMenuCreate menu
APPEND MENU ITEM$dynMenu
SET MENU ITEM PARAMETER$dynMenu
$dynMenu
SET MENU ITEM PARAMETER
Dynamic pop up menu$dynMenu
If$choice
// use columnName and row attributes of the Form event object
LISTBOX SET ROW COLOR FORM EventcolumnName FORM Eventrow $choice
End if
End if
RELEASE MENU
($dynMenu)
End if

フォームイベントの詳細については、doc centerを参照してください。

互換性についての注意

on clicked イベントで実行されるコードをすでに持っている場合、編集したセル内でクリックが発生したときにそのコードの実行を停止させたいことがあります。この場合、is editing text 関数で事前にこのセルの状態をテストしてください。

技術的な詳細については、ドキュメントをチェックしてください。

Roland Lannuzel
- プロダクトオーナー&4Dエキスパート -電子工学を学んだ後、産業用ITの分野で開発者兼コンサルタントとして、さまざまなデータベースやテクノロジーを使って顧客のためのソリューションを構築。80年代後半に4Dに惚れ込み、会計、請求書作成、メールシステムなどのビジネスアプリケーションの作成に4Dを使用してきました。現在も、新機能やデータベース開発ツールの定義など、4Dの未来を積極的に切り開いています。