twinBASIC: Ereigniseigenschaften von Fenstern

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Im Artikel twinBASIC: Forms öffnen, schließen und mehr (www.vbentwickler.de/389) haben wir bereits gezeigt, wie wir Fenster beziehungsweise Form-Elemente mit twinBASIC-Befehlen öffnen und schließen können und welche Varianten es dabei gibt. Über ein wichtiges Feature von Form-Elementen haben wir dabei noch nicht gesprochen: Die sogenannten Ereigniseigenschaften. Für diese können wir Prozeduren hinterlegen, die beim Auslösen bestimmter Ereignisse des Fensters ausgelöst werden – beispielsweise beim Öffnen, Schließen, Aktivieren, Deaktivieren oder auch beim Ändern der Größe oder der Position eines Fensters. Und auch wenn der Benutzer das Fenster an einer Stelle anklickt, die keine Steuerelemente enthält, wird ein Ereignis ausgelöst, auf das wir reagieren können. Wie wir solche Ereigniseigenschaften nutzen können und wir Du diese anlegst, zeigen wir in diesem Artikel.

Ereignisprozeduren anlegen

Im Artikel twinBASIC: Forms öffnen, schließen und mehr (www.vbentwickler.de/389) haben wir gelernt, wie wir Form-Elemente öffnen und schließen können, aber eine weitere, mächtige Möglichkeit haben wir uns noch nicht angesehen. Dabei handelt es sich um die Ereigniseigenschaften der Form-Klasse.

Was aber sind Ereignisse, Ereigniseigenschaften und Ereignisprozeduren überhaupt?

Ereignisse existieren erst einmal unabhängig von Dingen wie Ereigniseigenschaften oder Ereignisprozeduren. Ereignisse geschehen bei der Benutzung – ein Form-Element wird geöffnet, eine Schaltfläche wird angeklickt, ein Form-Element verliert den Fokus, weil ein anderes Form-Element diesen erhält, der Benutzer klickt mit rechten Maustaste auf einen Bereich, um ein Kontextmenü anzuzeigen und so weiter.

Hier setzen wir mit Ereigniseigenschaften und Ereignisprozeduren an, um uns diese Ereignisse zu Nutze zu machen. Dabei legen wir im Prinzip fest, dass beim Auftreten eines Ereignisses eine bestimmte Prozedur ausgelöst werden soll. Das geschieht durch das Erstellen einer Ereignisprozedur und durch das Einstellen einer Ereigniseigenschaft auf den Namen dieser Prozedur (zumindest in twinBASIC – in anderen Entwicklungsumgebungen gibt es andere Vorgehensweisen).

Dann geschieht Folgendes:

  • Der Benutzer führt eine Aktion durch, für die es eine Ereigniseigenschaft gibt, beispielsweise das Anklicken des Form-Elements.
  • Die Anwendung schaut, ob für die entsprechende Ereigniseigenschaft eine Ereignisprozedur hinterlegt ist.
  • Falls ja, wird diese Ereignisprozedur aufgerufen.

Da sich dies sehr theoretisch anhört, schauen wir uns nun in der Praxis an, wie es funktioniert.

Beispiel für eine Ereignisprozedur

Wir schauen uns eines der ersten Ereignisse an, das beim Öffnen eines Formulars ausgelöst wird, und das durch die Load-Ereigniseigenschaft repräsentiert wird.

Um eine Ereignisprozedur anzulegen, die durch dieses Ereignis ausgelöst wird, wechseln wir in der Entwurfsansicht des Form-Elements, hier das Fenster frmMain des Beispielprojekts, zur zweiten Registerseite des Eigenschaftbereichs. Hier finden wir weiter unten den Eintrag Load (siehe Bild 1).

Ereignisprozedur anlegen

Bild 1: Ereignisprozedur anlegen

Wir brauchen nur in das Textfeld der Eigenschaft zu klicken, damit twinBASIC automatisch den Code-Editor für das Klassenmodul des Form-Elements öffnet und dort eine leere Ereignisprozedur für dieses Ereignis hinterlegt. Dieses sieht anschließend wie in Bild 2 aus.

Die neue Ereignisprozedur

Bild 2: Die neue Ereignisprozedur

Benennung von Ereignisprozeduren

Der Name der Ereignisprozedur setzt sich standardmäßig aus dem Namen des Elements, für welches das Ereignis ausgelöst wird, einem Unterstrich und dem Namen des Ereignisses zusammen. Im Falle des Form-Elements frmMain ist das jedoch anders – hier verwendet twinBASIC standardmäßig nicht beispielsweise frmMain_Load, sondern Form_Load. Das ist eine Vereinfachung, weil wir so in allen Klassenformularen von Form-Elementen die gleiche Benennung für solche Ereignisprozeduren haben. Auf diese Weise können wir die Ereignisprozeduren auch leicht kopieren und in anderen Form-Klassenmodulen verwenden. Bei anderen Elementen wie zum Beispiel Schaltflächen ist dies anders. Wollen wir eine Ereignisprozedur anlegen, die beim Anklicken beispielsweise einer Schaltfläche namens cmdOK ausgelöst wird, erhält diese tatsächlich den Namen cmdOK_Click. Warum verwendet twinBASIC hier nicht einfach CommandButton_Click? Ganz einfach: Beim Form-Element ist es meist so, dass wir nur das Form-Element im Code referenzieren, zu dem das Klassenmodul auch gehört. Form-Elemente enthalten aber meist mehr als ein Element des Typs CommandButton, TextBox et cetera. Daher vergibt twinBASIC direkt eine Bezeichnung für die Ereignisprozedur, die den Namen des Steuerelements enthält.

Nach dem Anlagen der Ereignisprozedur trägt twinBASIC ihren Namen für die jeweilige Ereigniseigenschaft ein (siehe Bild 3).

Ereignisprozedur im Eigenschaftsbereich

Bild 3: Ereignisprozedur im Eigenschaftsbereich

 

Schreibe einen Kommentar