Ereignisbehandlungsroutinen müssen den Rückgabetyp void haben (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Den Typ der Behandlungsroutine definieren


Ereignisbehandlungsroutinen müssen immer den Rückgabetyp void haben. Trotzdem können Sie aus dem Code des Benutzers Informationen gewinnen, indem Sie Argumente per Referenz übergeben. Dabei muss allerdings darauf geachtet werden, dass dem Argument ein gültiger Wert zugewiesen wird, bevor der Aufruf der Ereignisbehandlungsroutine erfolgt. Mit dieser Maßnahme ist sichergestellt, dass der Code des Anwenders den Wert nicht ändern muss.

Ein Beispiel für die Übergabe von Argumenten per Referenz an eine Ereignisbehandlungsroutine ist das Tastendruck-Ereignis des Typs TKeyPressEvent. TKeyPressEvent definiert zwei Argumente: Ein Argument gibt an, von welchem Objekt das Ereignis generiert wurde, der zweite stellt fest, welche Taste gedrückt wurde:

typedef void __fastcall (__closure *TKeyPressEvent)(TObject *Sender, Char &Key);

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 Editorfeldes. Zu diesem Zweck könnte der Benutzer die folgende Behandlungsroutine für Tastenanschläge definieren:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, Char &Key)
{
  Key = UpCase(Key);
}

Sie können dem Benutzer aber auch mithilfe von Argumenten, die per Referenz übergeben wurden, die Möglichkeit zum Überschreiben der Standardbehandlung geben.

Siehe auch