Version 6.0 Geändert
WR ON EVENT (Bereich; Ereignis; Methode)
| Parameter | Typ | Beschreibung | |
| Bereich | Lange Ganzzahl | 4D Write Bereich | |
| Ereignis | Lange Ganzzahl | Code des Ereignisses | |
| Methode | String | Auszuführende Methode |
Beschreibung
Der Befehl WR ON EVENT installiert Methode als Methode, die immer aufgerufen wird, wenn Ereignis in Bereich auftritt. Ereignisse werden direkt in Methode übergeben, bevor sie von 4D Write bearbeitet werden.
Ist Bereich gleich 0, gilt Methode für alle 4D Write Bereiche bis zum Schließen der Datenbank. Ist in einem 4D Write-Bereich eine eigene Ereignismethode installiert, hat sie Vorrang vor der Standardmethode.
Nachfolgende Tabelle zeigt die möglichen Werte für Ereignis:
| Ereignis | Wert |
| Ereignismethode ist für alle Ereignisse aktiviert | -1 |
Zeicheneingabe (einschl. Pfeiltasten, Zeilen-
| schaltung, Tabulatoren, etc.) | 0 |
| Doppelklick | 1 |
| Mausklick | 2 |
| Nicht verwendet (für Kompatibilität mit 4D Calc) | 3 |
| Nicht verwendet (für Kompatibilität mit 4D Calc) | 4 |
| Aktivierter oder nicht aktivierter 4D Write Bereich | 5 |
| Nicht verwendet (für Kompatibilität mit 4D Calc) | 6 |
| Dokument drucken | 7 |
| Linealwechsel | 8 |
| Neuberechnung der Referenzen aus 4th Dimension | 9 |
| 4D Write Bereich schließen | 10 |
Methode erhält sechs Parameter, die den Status von Bereich zum Zeitpunkt des Ereignisses beschreiben. Für eine eventuelle Kompilierung müssen sie folgendermaßen deklariert sein:
| Variable | Typ | Beschreibung |
| $1 | Lange Ganzzahl | 4D Write Bereich |
| $2 | Ganzzahl | Umschalttaste |
| $3 | Ganzzahl | alt-Taste/Wahltaste |
| $4 | Ganzzahl | strg-Taste/Befehlstaste |
| $5 | Ganzzahl | Ereignistyp |
| $6 | Ganzzahl | Wert variiert gemäß Ereignistyp |
$1 gibt die Nummer des Bereichs zurück, wo das Ereignis auftrat. $2, $3 und $4 zeigen den Status der Sondertasten zum Zeitpunkt des Ereignisses. Ist Wert gleich 0, wurde die Taste nicht gedrückt. Ist Wert gleich 1, wurde die Taste gedrückt. $5 gibt den Ereignistyp zurück. $6 variiert je nach Ereignistyp.
Variablen und Parameter des Ereignisses ($6)
Ist Ereignis gleich 0, gibt $6 den ASCII Code der Taste zurück, die das Ereignis aufruft.
Ist Ereignis gleich 1 oder 2, zeigt $6 an, ob auf eine Referenz einfach oder doppelt geklickt wurde. Ist $6 gleich 0, wurde keine Referenz ausgewählt. Ist $6 gleich 1, wurde eine Referenz ausgewählt. Methode wird aufgerufen, wenn Sie folgende Aktionen ausführen:
Einfacher oder doppelter Mausklick auf eine Referenz
Rechter Mausklick unter Windows, ctrl-Taste + Mausklick auf Macintosh
Unter Windows erscheint dann ein DropDown-Menü, auf Macintosh ein PopUp-Menü.
Ist Ereignis gleich 5, gibt $6 an, ob ein Bereich aktiviert wurde. Bei $6 gleich 0 ist der 4D Write Bereich deaktiviert. Bei $6 gleich 1 ist der 4D Write Bereich aktiviert.
Ist Ereignis gleich 7 und der Druckauftrag ein Serienbrief, zeigt $6 die Nummer der verwendeten Tabelle. Bei einfachem Druck ist $6 gleich 0.
Ist Ereignis gleich 9, gibt $6 an, ob Ränder im Dokument neu gesetzt wurden. Bei $6 gleich 0 wurden die Ränder im Dokumententeil neu gesetzt, bei $6 gleich 1 im Kopfteil, bei $6 gleich 2 im Fußteil.
Um Zeichen zu filtern, müssen Sie die Methode als Funktion verwenden, die 0 oder 1 zurückgibt. So können Sie im Dokument Zeichen festlegen, die 4D Write ignoriert.
Weisen Sie $0 den Wert 0 zu, hat Methode auf ein bestimmtes Ereignis reagiert, bei $0 gleich 1 nicht, d.h. es soll von 4D Write ausgewertet werden.
Ein Beispiel soll diesen Fall veranschaulichen. Sie wollen nicht, daß das Zeichen "@" in Ihrem Dokument erscheint. Filtern Sie dazu die Eingabe aller Zeichen, die in Ihrem Dokument erscheinen. Sie ignorieren das Zeichen, wenn Sie $0 den Wert 1 zuweisen, während $6 gleich dem ASCII-Code für den Joker ist. Die Eingabe von @ wird dann unterdrückt.
Hinweis: Beim Filtern der Zeicheneingabe wird jeder Anschlag überprüft. Die Eingabe ist daher sehr verlangsamt. Sie sollten die Anwendung dann unbedingt kompilieren.
Beispiel
Im folgenden Beispiel werden einige Aktionen je nach Ereignistyp ausgeführt:
`Formularmethode: If (Form event=On load) WR ON EVENT (Bereich;0;"MethName") `Rufe alle Anschläge auf WR ON EVENT (Bereich;5;"MethName") `Prüfe Status des Bereichs DISABLE MENU ITEM(2;1) `Deaktiviere Menüzeile "Schrift ändern" End if
`Methode MethName: Case of : ($5=0) `Abfrage der Tasten If ($6=199) | ($6=200) `Dazugehörige ASCII Codes BEEP $0:=1 Else `Überläßt man 4D Write das Ereignis $0:=0 End if : ($5=5) `Abfrage über Statusänderung des 4D Write Bereichs If ($6=0) `Ist Bereich inaktiv DISABLE MENU ITEM(2;1) `Menüzeile "Schrift ändern" deaktivieren Else `Ist Bereich aktiv ENABLE MENU ITEM(2;1) `Menüzeile "Schrift ändern" aktivieren End if End case