4D v14

Video Skript

Home

 
4D v14
Video Skript

Video Skript  


 

 

Dieses Video zeigt, wie Ereignisse arbeiten und sich programmieren lassen.

Wir müssen unterscheiden zwischen:

  • "Formular" Ereignissen, gelistet in den Formularereignissen
  • Und "Datenbank" Ereignissen, definiert in den Eigenschaften einer Tabelle, da sie mit Triggern verbunden sind; d.h. Code, der ausgeführt wird, wenn ein spezifisches Ereignis eintritt.

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:

  • Daten erstellen
  • Ändern
  • Löschen

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:

  • Gehen Sie auf Seite 4 des Formulars Navigator, die Seite Preferences
  • Zeichnen Sie eine Standard Schaltfläche
  • Ändern Sie die Eigenschaften wie folgt:
    -  Name: bSpecial
    -  Nur das Ereignis “On Mouse Enter” bleibt markiert
  • Erstellen Sie seine Methode (ALT-Klick auf die Schaltfläche)

und geben folgenden Code ein:

  //Mausposition, wenn die Methode startet
 GET MOUSE($Mouse_H;$Mouse_V;$MouseButton//Wo ist das Objekt im Fenster?
 OBJECT GET COORDINATES(bSpecial;$Obj_L;$Obj_T;$Obj_R;$Obj_B)
 
  //Zentrum des Objekts berechnen
 $Center_H:=$Obj_L+(($Obj_R-$Obj_L)/2)
 $Center_V:=$Obj_T+(($Obj_B-$Obj_T)/2)
 
 $Shift:=10 //Verschieben um X Pixel einplanen</p><p>If ($Mouse_H<$Center_H) //Ist die Maus links vom Zentrum
 $T:=$Mouse_H-$Obj_L+$Shift  //Bewege das Objekt nach rechts
Else //Ist die Maus rechts vom Zentrum
 $T:=-($Obj_R-$Mouse_H+$Shift//Bewege das Objekt nach links
End if
If($Mouse_V<$Center_V//Ist die Maus über dem Zentrum
 $B:=$Mouse_V-$Obj_T+$Shift  //Bewege nach unten
Else //Ist die Maus unter dem Zentrum
 $B:=-($Obj_B-$Mouse_V+$Shift//Bewege nach oben
End if
 
  //Bewege die Schaltfläche je nach der oben definierten Information
OBJECT MOVE(bSpecial;$T;$B)

Das bedeutet:

  • Position der Maus berechnen
  • Und Position des Objekts, um sein Zentrum festzulegen
  • Objekt eine bestimmte Anzahl Pixel bewegen
  • Position der Maus vom Zentrum aus berechnen
  • Dann Position der Schaltfläche verändern

Wir testen:

  • Zeigen Sie das Formular an (über die Methode Navigator)
  • Gehen zur Seite Preferences
  • Und versuchen, auf die Schaltfläche zu klicken

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:
Wenn wir einen Einsatz eingeben, wollen wir seine Dauer anhand der Anfangs- und Endzeit berechnen.

Wir müssen folgendes ausführen:

  • Zuerst fügen wir in der Tabelle ein Feld für Endzeit hinzu
    Um Zeit zu sparen, kopieren Sie das Feld Hour und setzen es in die gleiche Tabelle. Ändern Sie dann den Namen.
  • Als nächstes fügen wir es im Eingabeformular hinzu: Kopieren Sie das Feld Hour_Intervention und passen es entsprechend ein. Nennen Sie es End.
  • Wir müssen auch die Dauer hinzufügen, um zu prüfen, ob unsere Programmierung korrekt läuft.
  • Dann müssen wir angeben, dass die Dauer erneut berechnet wird, wenn sich ein Zeitfeld ändert.
  • Wir markieren also das Datenbankereignis "On Data Change" und geben die auszuführende Berechnung an.
    Hinweis: ALT-Klick auf 2 Objekte, die keine Methode haben, erstellt nur die Methode für das angeklickte Objekt.

Die Dauer wird aus der Differenz zwischen Anfangs- und Endzeit berechnet, vorausgesetzt die Endzeit ist ausgefüllt, d.h. nicht Null.

Wir können den Code kopieren und die Methode für die Endzeit erstellen.

Beim Ändern der Einsatzzeit müssen jetzt Anfang und Ende ausgefüllt sein, dann wird automatisch die Dauer berechnet.
Wir prüfen natürlich auch, dass die Zeiten eingebbar sind. Dann testen wir mit einem Einsatz:

  • Wir öffnen die Liste der Einsätze 
  • Und nehmen den ersten

Der Code wird ausgeführt, wenn wir das Feld verlassen; d.h. im Kontext des Ereignisses "On Data Change".

Die nächste Sequenz zeigt, wie Sie Arrays programmieren können.

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Ereignisse

 
ARTIKELVERWENDUNG

Self-Training ( 4D v13)
Self-Training ( 4D v14)