Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Da das Ereignismodell von Visual FoxPro sehr umfassend ist, erhalten Sie umfangreiche Steuerungsmöglichkeiten über die Komponenten Ihrer Anwendung, die auf eine breite Palette von Benutzeraktionen reagieren. Einige der Ereignisfolgen stehen fest, z. B. wenn ein Formular erstellt oder gelöscht wird. Einige Ereignisse sind unabhängig von anderen; die meisten treten jedoch gemeinsam mit verschiedenen anderen, auf Benutzerinteraktion beruhenden Ereignissen auf.
Aktivieren der Ereignisüberwachung
Die beste Möglichkeit zum Anzeigen der Visual FoxPro-Ereignisfolgen besteht darin, die Ereignisüberwachung im Debugger zu aktivieren. Die Ereignisüberwachung ermöglicht Ihnen, zu sehen, wann jedes der mit Ihren selbst erstellten Formularen und Steuerelementen verbundene Ereignis in Bezug zu anderen Ereignissen auftritt. Auf diese Weise können Sie den effizientesten Platz für das Hinzufügen Ihres Codes ermitteln.
So aktivieren Sie die Ereignisüberwachung
- Klicken Sie im Menü Extras des Debugger-Fensters auf Ereignisüberwachung.
- Aktivieren Sie im Dialogfeld Ereignisüberwachung das Kontrollkästchen Ereignisüberwachung aktivieren.
Die in der Liste Zu überwachende Ereignisse befindlichen Ereignisse werden, wenn sie auftreten, in das Ausgabefenster des Debuggers oder in eine Protokollierungsdatei geschrieben.
Anmerkung In diesem Beispiel wurden aus der Liste Zu überwachende Ereignisse die Ereignisse MouseMove und Paint entfernt. Diese Ereignisse treten derartig häufig auf, dass sie die Überwachung der anderen Ereignisfolgen erschweren.
Beobachten des Auftretens von Ereignissen
Manchmal wird durch eine Benutzeraktion nur ein einzelnes Ereignis ausgelöst, beispielsweise wenn der Benutzer den Mauszeiger über ein Steuerelement verschiebt. Häufig werden jedoch dadurch mehrere Ereignisse ausgelöst.
In diesem Abschnitt wird anhand des folgenden Formularbeispiels die Reihenfolge beschrieben, in der die Ereignisse basierend auf Benutzeraktionen auftreten.
Beispielformular zur Illustration der Ereignisfolgen
.gif)
In diesem Beispiel führt der Benutzer folgende Aktionen mit dem Formular durch:
- Der Benutzer führt das Formular aus.
- Er gibt Text in "Text1" ein.
- Er markiert das Feld und kopiert es in die Zwischenablage.
- Er geht weiter nach "Text2".
- Er fügt den Text in "Text2" ein.
- Er schließt das Formular durch Klicken auf Command2.
Diese Aktionen lösen für jedes Objekt ein oder mehrere Systemereignisse aus. In den folgenden Tabellen werden die Ereignisse nach den auslösenden einzelnen Benutzeraktionen unterteilt.
Aktion 1
Der Benutzer führt das Formular aus, indem er den folgenden Befehl in das Befehlsfenster eingibt:
DO FORM form1 NAME frmObject
Visual FoxPro lädt das Formular, initialisiert jedes Objekt und anschließend das Formular; das Formular ist aktiviert, und das erste Feld erhält nun den Eingabefokus.
| Objekt | Ereignis |
|---|---|
| DataEnvironment | BeforeOpenTables |
| Form1 | Load |
| DataEnvironment | Init |
| Text1 | Init |
| Text2 | Init |
| Command1 | Init |
| Command2 | Init |
| Form1 | Init |
| Form1 | Activate |
| Form1 | GotFocus |
| Text1 | When |
| Text1 | GotFocus |
Aktion 2
Der Benutzer gibt Test in "Text1" ein. Jeder Tastendruck erzeugt zwei Ereignisse. Dem KeyPress-Ereignis werden 2 Parameter übergeben: die gedrückte Taste und der Status der Tasten UMSCHALT, ALT und STRG.
| Objekt | Ereignis |
|---|---|
| Text1 | KeyPress(84, 1) "T" |
| Text1 | InteractiveChange |
| Text1 | KeyPress(101, 0) "e" |
| Text1 | InteractiveChange |
| Text1 | KeyPress(115,0) "s" |
| Text1 | InteractiveChange |
| Text1 | KeyPress(116,0) "t" |
| Text1 | InteractiveChange |
Aktion 3
Der Benutzer doppelklickt auf "Text1", um den Text zu markieren, und drückt danach STRG+C, um den Text in die Zwischenablage zu kopieren. Mit dem DblClick-Ereignis sind Mausereignisse und ein Click-Ereignis verbunden. An die Ereignisse MouseMove und MouseDown werden vier Parameter übergeben: eine Zahl, die angibt, welche Taste gedrückt wurde, der Status der UMSCHALTTASTE und die X- sowie Y-Positionen. Die X- und Y-Positionen werden relativ zum Formular angegeben und entsprechen der Skalierung (ScaleMode) des Formulars (z. B. Pixel). Es wird nur ein MouseMove-Ereignis für jedes Steuerelement aufgelistet. Tatsächlich würde dieses Ereignis wahrscheinlich ein halbes Dutzend Mal oder öfter auftreten.
| Objekt | Ereignis |
|---|---|
| Form1 | MouseMove(0, 0, 100, 35) |
| Text1 | MouseMove(0,0,44,22) |
| Text1 | MouseDown(1, 0, 44, 22) |
| Text1 | MouseUp(1, 0, 44, 22) |
| Text1 | Click |
| Text1 | MouseDown(1, 0, 44, 22) |
| Text1 | MouseUp(1, 0, 44, 22) |
| Text1 | DblClick |
Aktion 4
Der Benutzer drückt TAB, um zu "Text2" zu springen.
| Objekt | Ereignis |
|---|---|
| Text1 | KeyPress(9, 0) |
| Text1 | Valid |
| Text1 | LostFocus |
| Text2 | When |
| Text2 | GotFocus |
Aktion 5
Der Benutzer fügt den kopierten Text in "Text2" ein, indem er STRG+V drückt.
| Objekt | Ereignis |
|---|---|
| Text2 | InteractiveChange |
Aktion 6
Der Benutzer klickt auf Command2, wodurch das Formular geschlossen wird.
| Objekt | Ereignis |
|---|---|
| Form1 | MouseMove |
| Command2 | MouseMove |
| Text2 | Valid |
| Command2 | When |
| Text2 | LostFocus |
| Command2 | GotFocus |
| Command2 | MouseDown(1, 0, 143, 128) |
| Command2 | MouseUp(1, 0, 143, 128) |
| Command2 | Click |
| Command2 | Valid |
| Command2 | When |
Wird das Formular geschlossen und das Objekt aus dem Arbeitsspeicher gelöscht, dann finden folgende zusätzliche Ereignisse in umgedrehter Reihenfolge zu den Ereignissen in Aktion 1 statt.
| Objekt | Ereignis |
|---|---|
| Form1 | Destroy |
| Command2 | Destroy |
| Command1 | Destroy |
| Text2 | Destroy |
| Text1 | Destroy |
| Form1 | Unload |
| DataEnvironment | AfterCloseTables |
| DataEnvironment | Destroy |
Die Visual FoxPro-Ereignisfolge
Die folgende Tabelle zeigt die allgemeine Auslösungssequenz für Visual FoxPro-Ereignisse. Für die AutoOpenTables-Eigenschaft der Datenumgebung wird vorausgesetzt, dass sie auf Wahr (.T.) gesetzt wurde. Andere Ereignisse können basierend auf Benutzeraktionen und Systemreaktionen auftreten.
| Objekt | Ereignisse |
|---|---|
| Datenumgebung | BeforeOpenTables |
| Formularsatz | Load |
| Formular | Load |
| Datenumgebungs-Cursor | Init |
| Datenumgebung | Init |
| Objekte 1 | Init |
| Formular | Init |
| Formularsatz | Init |
| Formularsatz | Activate |
| Formular | Activate |
| Objekt1 2 | When |
| Formular | GotFocus |
| Objekt1 | GotFocus |
| Objekt1 | Message |
| Objekt1 | Valid3 |
| Objekt1 | LostFocus |
| Objekt2 3 | When |
| Objekt2 | GotFocus |
| Objekt2 | Message |
| Objekt2 | Valid4 |
| Objekt2 | LostFocus |
| Formular | QueryUnload |
| Formular | Destroy |
| Objekt 5 | Destroy |
| Formular | Unload |
| Formularsatz | Unload |
| Datenumgebung | AfterCloseTables |
| Datenumgebung | Destroy |
| Datenumgebungs-Cursor | Destroy |
1. 1 Für jedes Objekt vom innersten Objekt zum äußersten Container
2 Erstes Objekt in der Aktivierfolge
3 Nächstes Objekt, das den Fokus erhält
4 Wenn das Objekt den Fokus verliert
5 Für jedes Objekt vom äußersten Container zum innersten Objekt
Siehe auch
Ereignisse in Visual FoxPro | Zuweisen von Code zu Ereignissen | Debugger-Fenster | Befehlsfenster | KeyPress-Ereignis | Click-Ereignis | DblClick-Ereignis | MouseMove-Ereignis | MouseDown-Ereignis | AutoOpenTables-Eigenschaft | Grundlegendes zum Ereignismodell