Listenfelder: Verwalten von Klicks in bearbeiteten Zellen

Als Entwickler sind Sie es gewohnt, Ereignisse in Formularobjekten zu behandeln. Das häufigste ist das on clicked form-Ereignis, das in den meisten Objekten, einschließlich Listenfeldern, verwendet werden kann. In diesem speziellen Objekt können Klicks entweder auf der Ebene der Listbox selbst oder innerhalb der Spaltenmethoden verwaltet werden.

Ab 4D v18 R6 wird das Formular-Ereignis on clicked unabhängig davon ausgelöst, ob eine Zelle bearbeitet wird oder nicht, was Ihnen mehr Kontrolle gibt und die Benutzeroberfläche verbessert.

Hier ist ein sehr einfaches Beispiel:

Sie möchten mögliche Werte über ein Kontextmenü für eine Zelle anzeigen, wenn diese bearbeitet wird. Wenn die Zeile jedoch nur ausgewählt ist, möchten Sie eine Farbauswahl für diese bestimmte Zeile oder Zelle anbieten.

Das ist sehr einfach zu bewerkstelligen!

Prüfen Sie während des Ereignisses on clicked einfach, ob die Zelle bearbeitet wird oder nicht. Zeigen Sie dann je nach Ergebnis das eine oder andere Menü an!

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; "Blau")
SET MENU ITEM PARAMETER ($dynMenu; -1; "Blau")
APPEND MENU ITEM ($dynMenu; "Grün")
SET MENU ITEM PARAMETER ($dynMenu; -1; "Grün")
$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

Weitere Details zu Formular-Ereignissen finden Sie im Doc Center!

Hinweis zur Kompatibilität

Wenn Sie bereits Code haben, der während des Ereignisses on clicked ausgeführt wird, möchten Sie vielleicht die Ausführung dieses Codes stoppen, wenn ein Klick in einer bearbeiteten Zelle erfolgt. In diesem Fall testen Sie einfach den Zustand dieser Zelle mit der Funktion is editing text im Voraus.

Weitere technische Details finden Sie in der Dokumentation, und bei Fragen stehen wir Ihnen im 4D Forum gerne zur Verfügung!

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.