Zusätzlich zu den Erläuterungen im Video sollten Sie folgendes beachten:
Nicht alle Objekte haben dieselben Ereignisse. So können Sie für eine Schaltfläche nicht das Ereignis "On Data Change" markieren, da Sie keinen Inhalt "eingeben" können.
Hier ein paar Beispiele:
On Mouse Enter Wenn die Maus in den "Luftraum" der Schaltfläche eindringt.
On Data Change Beim Verlassen eines Feldes oder einer Variablen, wenn sich der Inhalt geändert hat. Dient hauptsächlich zum Prüfen bei Eingabe, Formatierung (Groß- und Kleinschreibung), Suchen, erneuten Berechnungen.
On Clicked Wenn auf ein Objekt geklickt wird, in der Regel Schaltflächen, PopUps, Menüs, etc. Lässt sich auch auf eingebbare Objekte anwenden.
On Getting Focus Wenn das Objekt gerade Fokus erhalten hat (von On Clicked, über Tabulator oder per Programmierung).
On Load Unmittelbar bevor ein Formular auf dem Bildschirm angezeigt oder gedruckt wird. Während diesem Ereignis wird in der Regel eine Initialisierung ausgeführt.
On Printing Detail Während Drucken von Datensätzen. Ermöglicht z.B. einen Wert für die Variablen Gesamtsumme, Verkettung.
Diese Liste zeigt nur eine Auswahl. Die komplette Beschreibung der Ereignisse finden Sie im Handbuch 4D Programmiersprache im Kapitel Formularereignisse.
Es gibt ein wichtiges Detail, wo nach neue Benutzer immer fragen: Muss ich Formularereignisse oder Objektereignisse markieren? Die Antwort ist einfach: Das hängt davon ab, wie Sie Ihre Methoden erstellen. Die Formularmethode sollte theoretisch nur enthalten, was zum Bearbeiten des gesamten Formulars relevant ist:
Größe verändern
Aufruf nach Außen
Objekte anzeigen/ausblenden
etc.
Demgegenüber sollten Objektmethoden nur das enthalten, was für das Objekt selbst spezifisch ist (Schaltfläche, Feld, etc.). Das ist die allgemeine Regel und Sie sollten mehrere gute Gründe haben, bevor Sie sie brechen.
Hier die wichtigsten Unterschiede:
Formularmethode: Zentralisiert, globale Bearbeitung, leicht zu pflegen. Risiko, dass sie öfters als benötigt ausgeführt wird.
Objektmethode: Spezifisch, angepasst, wird nur bei Bedarf ausgeführt. Ermöglicht leicht, ein Objekt per Copy-Paste zu übertragen, insbesondere bei Zeigern. Die Methode, die die Methode aufruft, muss in jedem Objekt dupliziert werden.
Es gibt auch Fälle, wo wir bestimmte Prozesse in die Formularmethode legen.
Sie müssen z.B. einen Wert neu berechnen, der von 10 eingebbaren Parametern abhängt. Für jeden geänderten Parameter müssen Sie die Berechnung erneut ausführen. Anstatt die Formel oder den Methodenaufruf in jedes der 10 Felder mit Parameter zu setzen, können Sie diese Berechnung in eine Formularmethode setzen.
Das vereinfacht und zentralisiert den Vorgang; die Berechnung wird aber höchstwahrscheinlich öfters als notwendig ausgeführt - insbesondere beim Ändern eines Bereichs, der nicht in der Endberechnung vorkommt. (Tipp: 4D lässt Sie wissen, welches Objekt geändert wurde, so dass wir die Berechnung entsprechend anpassen können).
Auch die Reihenfolge, in der die Ereignisse ausgeführt werden, ist wichtig. Für eine Schaltfläche gilt z.B. folgendes:
On Mouse Enter
On Mouse Move
On Getting Focus
On Clicked (falls vorhanden)
On Mouse Leave
On Losing Focus
Bei einem angeklickten Feld bzw. einer Variablen:
On Mouse Enter
On Mouse Move
On Getting Focus
On Data Change (falls vorhanden)
On Losing Focus
On Mouse Leave
Um Zeit beim Schreiben Ihres Code zu sparen und ihn zuverlässiger zu machen, können Sie Makros setzen (Datei “macros.xml”).
Sie können z.B. ein Makro anlegen, das folgenden Code schreibt, immer wenn Sie “#$evt” in Ihrer Methode tippen:
Weiter vertiefen: Studieren Sie genau, wie Ereignisse arbeiten, denn das hilft zu verstehen, wann Sie Ihre Programmierung ausführen sollen. Sie bekommen auch ein Gefühl für leistungsstarke Schritte durch Ereignisse wie: