4D v16Ereignisse |
||
|
4D v16
Ereignisse
Ereignisse
Hier erfahren Sie, wie Ereignisse arbeiten und sich programmieren lassen. Wir müssen unterscheiden zwischen:
Formularereignisse treten nur auf, wenn ein Formular benutzt wird (auf dem Bildschirm oder beim Drucken), d.h. ein Benutzer verwendet die Oberfläche, z.B. bei einem Mausklick, Drag-and-Drop, u.ä. Datenbankereignisse betreffen nur 3 Aktionen:
Diese 3 Ereignisse verwaltet die Datenbank-Engine. Das ist ein wichtiger Punkt, denn im Client/Server Modus läuft die Engine auf dem Server. Folglich wird ein Datenbankereignis nie auf Ihrem Client-Rechner ausgeführt. Sie können es auf einem Client auch nicht nachvollziehen. Mehr dazu später. Zuerst wollen wir ein bißchen Spaß haben und eine etwas "spezielle" Schaltfläche erstellen:
und geben folgenden Code ein: //Mausposition, wenn die Methode startet Das bedeutet:
Wir testen:
Immer wenn Sie in die Nähe der Schaltfläche kommen, bewegt sie sich in die Gegenrichtung (links, rechts, oben oder unten). Fällt die Schaltfläche aus dem Bildschirm heraus, schließen Sie das Formular und starten erneut; die Schaltfläche erscheint wieder an der Ausgangsposition. Dies war ein kleines Beispiel zum Verwenden von Ereignissen. Sehen wir uns ein anderes an: Wir müssen folgendes ausführen:
Die Dauer wird aus der Differenz zwischen Anfangs- und Endzeit berechnet, vorausgesetzt die Endzeit ist ausgefüllt, d.h. nicht Null. Wir verwenden folgenden Code für Hour_Interventions: If([Interventions]Hour_Interventions_End#?00:00:00?) Wir können den Code kopieren. ihn in die Methode für die Endzeit einfügen und das Hour_Interventions_End in der If-Abfrage zu Hour_Interventions ändern. Beim Ändern der Einsatzzeit müssen jetzt Anfang und Ende ausgefüllt sein, dann wird automatisch die Dauer berechnet.
Wir geben eine beliebige Dauer in das Endzeit-Feld ein und sehen, dass Duration automatisch berechnet wird. Der Code wird ausgeführt, wenn wir das Feld verlassen; d.h. im Kontext des Ereignisses "On Data Change". Hier 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:
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, wonach neue Benutzer immer fragen: Muss ich Formularereignisse oder Objektereignisse markieren? Die Antwort ist einfach: Das hängt davon ab, wie Sie Ihre Methoden erstellen.
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:
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. Auch die Reihenfolge, in der die Ereignisse ausgeführt werden, ist wichtig. Für eine Schaltfläche gilt z.B. folgendes:
Bei einem angeklickten Feld bzw. einer Variablen:
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: $evt:=Form event Weiter vertiefen:
sowie gängige Standardereignisse:
|
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
ARTIKELVERWENDUNG
Self-Training ( 4D v16) |