ON EVENT CALL

4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 3


ON EVENT CALL (MethodenName{; ProzessName})

ParameterTypBeschreibung
MethodenNameStringAufzurufende Ereignismethode, oder
leerer String zum Stoppen
der Ereignissuche
ProzessNameStringName des Prozesses

Beschreibung

Der Befehl ON EVENT CALL legt die Unterbrechungsmethode mit Namen MethodenName an, um Ereignisse ausfindig zu machen. Sie heißt auch Ereignisverwaltungsmethode oder Ereignisabfangmethode.

Tipp: Dieser Befehl erfordert fortgeschrittene Programmierkenntnisse. Beim Arbeiten mit Ereignissen benötigen Sie ON EVENT CALL normalerweise nicht. In Formularen verwaltet 4th Dimension die Ereignisse und sendet sie zu den entsprechenden Formularen und Objekten.

Tipp: Version 6 führt neue Befehle für Informationen über Ereignisse ein, wie z.B. GET MOUSE, Shift down, etc.. Sie können diese Befehle innerhalb von Objektmethoden aufrufen, um die erforderliche Information über ein Ereignis mit einem Objekt zu erhalten. So müssen Sie nicht einen Algorithmus nach dem Schema ON EVENT CALL schreiben.

Der Befehl gilt für die aktuelle Arbeitssitzung. Die Methode läuft standardmäßig in einem separaten lokalen Prozess. Sie können zur gleichen Zeit immer nur eine Ereignisverwaltungsmethode haben. Wollen Sie das Auffinden von Ereignissen stoppen, rufen Sie erneut ON EVENT CALL auf und übergeben in MethodenName einen leeren String.

Da die Ereignisverwaltungsmethode in einem separaten Prozess läuft, ist sie immer aktiv, selbst wenn keine 4th Dimension Methode läuft. 4th Dimension ruft diese Methode immer auf, wenn ein Ereignis eintritt. Das kann ein Mausklick oder Drücken einer Taste sein.

Der optionale Parameter ProzessName gibt den Namen des Prozesses an, der von ON EVENT CALL erzeugt wurde. Ist ProzessName das Dollarzeichen ($) vorangestellt, wird ein lokaler Prozess gestartet. Geben Sie den Parameter ProzessName nicht an, erstellt 4D standardmäßig einen lokalen Prozess mit Namen $Event Manager.

Warnung: Seien Sie vorsichtig, was Sie in einer Ereignisverwaltungsmethode ausführen. Rufen Sie KEINE Befehle auf, die Ereignisse generieren, da Sie sonst nur sehr schwer aus der Ausführung von Ereignisverwaltungsmethoden herauskommen. Mit der Tastenkombination strg-/Umschalt-/Rückschrittaste unter Windows bzw. Befehls-/Umschalt-/Rückschrittaste auf Macintosh wird der Event Manager Prozess in einen normalen Prozess umgewandelt. Die Methode wird dann nicht mehr automatisch bei allen eintretenden Ereignissen übergeben.

Mit den Systemvariablen—MouseDown, KeyCode, Modifiers, MouseX, MouseY und MouseProc können Sie zwischen nachfolgenden Ereignissen unterscheiden. Beachten Sie, dass diese Variablen Prozessvariablen sind. Von daher ist ihre Reichweite die Ereignisverwaltungsmethode. Sollen Ihre Werte auch für andere Prozesse verfügbar sein, kopieren Sie diese Variablen in Interprozessvariablen.

MouseDown enthält 1 bei einem Mausklick und 0 bei Drücken einer Taste auf der Tastatur.

KeyCode enthält den ASCII Code des auf der Tastatur gedrückten Zeichens. Diese Variable gibt einen ASCII Code oder eine Funktionstaste zurück. Eine Liste dieser Codes finden Sie in den Abschnitten ASCII Codes und Funktionstasten. 4D bietet für die meisten ASCII Codes und Funktionstasten vordefinierte Konstanten. Die Themen der Konstanten finden Sie im Explorer Fenster.

Modifiers enthält den Modifier ??. Diese Variable gibt an, ob beim Eintreten eines Ereignisses eine der folgenden Tasten gedrückt war:

PlattformModifiers
WindowsUmschalttaste, Feststelltaste, alt-, strg-Taste, Rechte Maustaste
MacintoshUmschalttaste, Feststelltaste,Wahltaste, Befehlstaste, ctrl-Taste

Hinweise

- Die alt-Taste unter Windows entspricht der Wahltaste auf Macintosh

- Die strg-Taste unter Windows entspricht der Befehlstaste auf Macintosh

- Die ctrl-Taste auf Macintosh hat keine Entsprechung unter Windows. Das Betätigen der rechten Maustaste unter Windows entspricht dem Drücken der ctrl-Taste auf Macintosh.

Allein bewirken diese Tasten noch kein Ereignis. Sie können aber zusammen mit anderen Tasten oder einem Mausklick abgefragt werden. Die Variable Modifiers ist vom Typ 4-byte Lange Ganzzahl und sollte als ein 32 Bit Array angesehen werden. 4D bietet vordefinierte Konstanten, die die Bit Position bzw. Bit Maske zum Überprüfen des Bit für die jeweilige Funktionstaste angibt. Wollen Sie z.B. prüfen, ob die Umschalttaste gedrückt wurde, schreiben Sie:

   If (Modifiers ?? Shift key bit ) ` Wurde die Großschreibtaste gedrückt

oder:

   If ((Modifiers & Shift key mask)#0)` Wurde die Großschreibtaste gedrückt

Hinweis: Unter Windows wird der Variablen Modifiers der Wert 128 hinzugefügt, wenn die linke Maustaste zur Zeit des Ereignisses losgelassen wird.

MouseX und MouseY bestimmen den genauen Ort des letzten Mausklicks. Sie geben seine horizontalen und vertikalen Koordinaten zurück. Die Koordinaten werden von der linken oberen Ecke des Fensters aus berechnet.

MouseProc identifiziert den Prozess mit dem letzten Mausklick.

Wichtig: Die Systemvariablen MouseDown, KeyCode, Modifiers, MouseX, MouseY und MouseProc enthalten signifikante Werte nur in einer Ereignisverwaltungsmethode, die mit ON EVENT CALL installiert wurde.

Beispiel

Dieses Beispiel bricht den Druckvorgang ab, wenn der Benutzer die Tastenkombination ctrl/Punkt drückt. Zuerst wird die Ereignisverwaltungsmethode installiert, dann erscheint eine Meldung, dass der Benutzer den Druckvorgang abbrechen kann. Wird die Interprozessvariable <>vbWeStop in der Ereignisverwaltungsmethode auf den Wert Wahr gesetzt, erhält der Benutzer eine Meldung über die Anzahl der bereits gedruckten Datensätze. Dann wird die Ereignisverwaltungsmethode entfernt:

   PAGE SETUP
   If (OK=1)
      <>vbWeStop:=False
      ON EVENT CALL("EVENT HANDLER") ` Installiert die Ereignisverwaltungsmethode
      ALL RECORDS([People]) 
      MESSAGE("Unterbrich Drucken mit Tastenkombination ctrl/Punkt") 
      $vlNbRecords:=Records in selection([People])
      For ($vlRecord;1;$vlNbRecords)
         If (<>vbWeStop) 
            ALERT("Drucken abgebrochen bei Datensatz "+String($vlRecord)
                                    +" von "+String($vlNbRecords)) 
            $vlRecord:=$vlNbRecords+1
         Else 
            Print form([People];"Spezialbericht") 
         End if 
      End for 
      PAGE BREAK 
      ON EVENT CALL("") ` Entferne die Ereignisverwaltungsmethode
   End if

Durch Drücken der Tastenkombination ctrl/Punkt erhält die Ereignisverwaltungsmethode den Wert Wahr:

      ` Projektmethode EVENT HANDLER 
   If ((Modifiers ?? Command key bit) & (KeyCode = Period))
      CONFIRM("Sind Sie sicher?") 
      If (OK=1) 
         <>vbWeStop:=True
         FILTER EVENT ` Vergessen Sie NICHT diesen Aufruf, 
                        da 4D sonst auch dieses Ereignis erhält
      End if 
   End if

Beachten Sie, dass dieses Beispiel ON EVENT CALL einsetzt, da es mit den Befehlen PAGE SETUP, Print form und PAGE BREAK mit einer For…End for Schleife einen speziellen Druckbericht ausführt.

Drucken Sie einen Bericht mit PRINT SELECTION, benötigen Sie keine Ereignisverwaltung zum Unterbrechen des Druckvorgangs; das erledigt bereits PRINT SELECTION.

Referenz

FILTER EVENT, GET MOUSE, Method called on event, Shift down.


4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next