Krabice se seznamem: Správa kliknutí v upravených buňkách

Automaticky přeloženo z Deepl

Jako vývojáři jste zvyklí zpracovávat události uvnitř objektů formuláře. Nejběžnější je událost formuláře on clicked, kterou lze použít ve většině objektů včetně seznamových polí. V tomto konkrétním objektu lze kliknutí spravovat buď na úrovni samotného pole seznamu, nebo v rámci metod sloupců.

A počínaje verzí 4D v18 R6 je událost formuláře on clicked spouštěna bez ohledu na to, zda je buňka upravována, což poskytuje větší kontrolu a zlepšuje rozhraní.

Zde je velmi jednoduchý příklad:

Chcete zobrazit možné hodnoty pomocí kontextové nabídky pro buňku, když je upravována. Když je však řádek jednoduše vybrán, chcete nabídnout výběr barvy pro daný řádek nebo buňku.

To lze provést velmi jednoduše!

Během události on clicked stačí zkontrolovat, zda je buňka upravována, nebo ne. Podle výsledku pak zobrazte tu či onu nabídku!

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

Další podrobnosti o formulářových akcích najdete v dokumentačním centru!

Poznámka ke kompatibilitě

Pokud již máte kód, který se spouští během události on clicked, možná budete chtít zastavit provádění tohoto kódu, když dojde ke kliknutí uvnitř editované buňky. V takovém případě jednoduše předem otestujte stav této buňky pomocí funkce is editing text.

Další technické podrobnosti naleznete v dokumentaci a v případě dotazů se připojte k nám na fóru 4D!

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.