4D v16.3

ON EVENT CALL

Home

 
4D v16.3
ON EVENT CALL

ON EVENT CALL 


 

ON EVENT CALL ( MethodenName {; ProzessName} ) 
Parameter Typ   Beschreibung
MethodenName  String in Aufzurufende Ereignismethode, oder leerer String zum Stoppen der Ereignissuche
ProzessName  String in Name des Prozesses

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 4D die Ereignisse und sendet sie zu den entsprechenden Formularen und Objekten.

Tipp: Befehle wie z.B. GET MOUSE, Shift down, etc..., liefern Informationen über Ereignisse. 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 4D Methode läuft. 4D 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 es sonst u.U. nicht mehr gelingt, aus dieser Methode herauszukommen. Über die Tastenkombination strg-/Umschalt-/Rückschrittaste unter Windows bzw. Befehls-/Umschalt-/Rückschrittaste auf Macintosh können Sie den Event Manager Prozess stoppen. Auf diese Weise können Sie aus einer Ereignisverwaltungsmethode herauskommen, die unkontrollierbar geworden ist.

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 der Ereignisverwaltungsprozess. Sollen Ihre Werte auch in einem anderen Prozess verfügbar sein, kopieren Sie diese Variablen in Interprozessvariablen.

  • MouseDown wird auf 1 gesetzt, wenn das Ereignis ein Mausklick ist, und 0, wenn nicht.
  • KeyCode erhält den Code einer Taste. Diese Variable gibt den Code eines Zeichens oder einer Funktionstaste zurück. Eine Liste dieser Codes finden Sie in den Abschnitten Unicode Codes und EXPORT TEXT sowie 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 Wert der Zusatztaste. Diese Variable gibt an, ob bei Eintreten eines Ereignisses eine der folgenden Tasten gedrückt war:
PlattformModifiers
WindowsUmschalttaste, Feststelltaste, alt-, strg-Taste
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 entspricht keiner Taste unter Windows. Hier wird die rechte Maustaste verwendet.

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 Lange Ganzzahl mit einem Bit-Feld. 4D bietet vordefinierte Konstanten, die die Bit Position bzw. Bit Maske 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 Umschalttaste gedrückt

oder:

 If((Modifiers & Shift key mask)#0) //Wurde die Umschalttaste gedrückt

Sie können eine der nachfolgenden Konstanten unter dem Thema Ereignisse (Zusatztasten) verwenden:

ModifiersKonstante
ShiftShift key bit / Shift key mask
Caps LockCaps lock key bit / Caps lock key mask
Alt (Wahltaste auf OS X)Option key bit / Option key mask
Strg unter WindowsCommand key bit / Command key mask
Ctrl auf OS XControl key bit / Control key mask
Befehl auf OS XCommand key bit / Command key mask
Rechter KlickControl key bit / Control key mask

  • MouseX und MouseY geben die horizontale und vertikale Position des Mausklicks zurück, gemäß dem lokalen Koordinatensystem des Fensters, wo der Klick aufgetreten ist. Die Koordinaten werden von der linken oberen Ecke des Fensters aus berechnet. Sie sind nur relevant, wenn es einen Mausklick gibt.
  • MouseProc enthält die Referenznummer des Prozesses, in dem das Ereignis (Mausklick) aufgetreten ist.

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

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 dieser Befehl bereits.



Siehe auch 

FILTER EVENT
GET MOUSE
Method called on event
Shift down

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Unterbrechungen
Nummer: 190

Nicht für Server verwendbar

 
GESCHICHTE 

Erstellt: < 4D v6

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)