Überprüfen von Ereignisfolgen

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

  1. Klicken Sie im Menü Extras des Debugger-Fensters auf Ereignisüberwachung.
  2. 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

In diesem Beispiel führt der Benutzer folgende Aktionen mit dem Formular durch:

  1. Der Benutzer führt das Formular aus.
  2. Er gibt Text in "Text1" ein.
  3. Er markiert das Feld und kopiert es in die Zwischenablage.
  4. Er geht weiter nach "Text2".
  5. Er fügt den Text in "Text2" ein.
  6. 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