Ereignisbehandlungstypen sind Prozeduren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Ereignistypen sind Methodenzeigertypen


Obwohl der Compiler zulässt, dass Sie Methodenzeiger als Funktionen deklarieren, dürfen Sie diese Möglichkeit niemals für die Behandlung von Ereignissen in Betracht ziehen. Da eine leere Funktion ein undefiniertes Ergebnis zurückliefert, kann eine leere Ereignisbehandlungsroutine, die als Funktion deklariert wurde, unter Umständen ungültig sein. Aus diesem Grund müssen Ereignisse und die mit ihnen verbundenen Behandlungsroutinen immer Prozeduren sein.

Obwohl eine Ereignisbehandlungsroutine keine Funktion sein kann, können Sie trotzdem über den Quelltext des Anwendungsentwicklers mithilfe der var-Parameter Informationen ermitteln. Dazu müssen Sie sicherstellen, dass dem Parameter vor dem Aufruf der Behandlungsroutine ein gültiger Wert zugewiesen wird. In diesem Fall ist es nicht erforderlich, dass der Benutzerquelltext den Wert ändert.

Ein Beispiel für die Übergabe von var-Parametern an eine Ereignisbehandlungsroutine ist das Ereignis OnKeyPress vom Typ TKeyPressEvent. TKeyPressEvent definiert zwei Parameter. Ein Parameter gibt an, von welchem Objekt das Ereignis generiert wurde, der zweite stellt fest, welche Taste gedrückt wurde:

 type
   TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object;

Normalerweise enthält der Parameter Key das Zeichen, das der Benutzer eingegeben hat. Es gibt aber Situationen, in denen der Benutzer der Komponente das Zeichen ändern möchte. Ein Beispiel dafür wäre die Umwandlung aller Zeichen zu Großbuchstaben mithilfe eines Editors. Zu diesem Zweck könnte der Benutzer die folgende Behandlungsroutine für Tastenanschläge definieren:

 procedure TForm1.Edit1KeyPressed(Sender: TObject; var Key: Char);
 begin
   Key := UpCase(Key);
 end;

Sie können dem Benutzer aber auch mithilfe der var-Parameter die Möglichkeit zum Überschreiben der Standardbehandlung geben.

Siehe auch