Ereignisse sind Eigenschaften
Nach oben zu Was sind Ereignisse?
Komponenten implementieren ihre Ereignisse in Form von Eigenschaften. Im Gegensatz zu den meisten anderen Eigenschaften setzen Ereignisse keine Methoden zur Implementierung ihrer read- und write-Abschnitte ein. Sie bedienen sich statt dessen eines als private deklarierten Klassenfeldes, das denselben Typ wie die Eigenschaft aufweist.
Per Konvention besteht der Name des Felds aus dem Namen der Eigenschaft, dem der Buchstabe F vorangestellt wird. Beispielsweise wird der Zeiger der Methode OnClick in einem Feld namens FOnClick vom Typ TNotifyEvent gespeichert. Die Deklaration der Ereigniseigenschaft OnClick sieht folgendermaßen aus:
type
TControl = class(TComponent)
private
FOnClick: TNotifyEvent; { Deklaration eines Feldes für den Methodenzeiger }
.
.
.
protected
property OnClick: TNotifyEvent read FOnClick write FOnClick;
end;
class PACKAGE TControl : public TComponent
{
private:
TNotifyEvent FOnClick;
.
.
.
protected:
__property TNotifyEvent OnClick = {read=FOnClick, write=FOnClick};
.
.
.
};
Informationen über TNotifyEvent und andere Ereignistypen finden Sie unter Ereignistypen sind Methodenzeigertypen.
Genauso wie bei anderen Eigenschaften können Sie auch bei Ereignissen den Wert zur Laufzeit setzen oder ändern. Dass Ereignisse als Eigenschaften eingesetzt werden können, hat einen großen Vorteil: Die Benutzer der Komponenten können den Ereignissen zur Entwurfszeit mithilfe des Objektinspektors Routinen zuweisen.