twinBASIC: Fenster öffnen, schließen und mehr

Form-Objekte waren in VB6 und sind in twinBASIC das Element der Wahl, wenn es um die Abbildung von Benutzeroberflächen geht. In diesem Artikel zeigen wir die grundlegenden Techniken rund um die Verwendung und Programmierung von Forms. Dabei zeigen wir, wie Du ein Form-Element öffnest, es wieder schließt und welche Öffnungsmodi es gibt. Dabei beschreiben wir auch, wie Du die Position eines Formulars nach dem Öffnen festlegen kannst. Außerdem schauen wir uns schon einige der grundlegenden Ereigniseigenschaften von Forms an und zeigen, wie wir diese in Form von Ereignisprozeduren implementieren können.

Fenster oder Form?

In den folgenden Abschnitten werden wir synonym von Fenstern und Forms sprechen. Allgemein ist zwar nicht jedes Fenster ein Form-Objekt, aber im Kontext des vorliegenden Artikels schon.

Forms öffnen

Wenn wir mit einer neuen twinBASIC-Anwendung starten, haben wir zwei Möglichkeiten, das erste Fenster zu öffnen:

  • Durch Angabe des Fensters für die Eigenschaft Project: Startup Object oder
  • durch Aufrufen der Prozedur Main, der wir den Code zum Öffnen eines Fensters zuweisen.

Form als Startfenster öffnen

Wir schauen uns zuerst die erste Möglichkeit an, wo wir ein Fenster als Startfenster festlegen. Damit wir in unserem neuen Projekt namens Forms_OpenCloseAndCo nicht die ganze Zeit mit einem Startform namens Form1 arbeiten müssen, löschen wir dieses und fügen über den Kontextmenü-Eintrag Add|Add Form ein neues Form-Element hinzu, das wir gleich nach dem Anlegen frmMain nennen.

Achtung: Nur wenn wir dies erledigen, solange der Bearbeitungsmodus des neuen Form-Elements im Projektexplorer aktiviert ist, werden alle Elemente des Form-Objekts umbenannt – also auch die Eigenschaft Name des Form-Elements, der Name der Code behind-Klassendatei und auch der Name der Klasse selbst. Hast Du diesen Zeitpunkt verpasst, kein Problem – lösche das Element einfach wieder und lege es erneut an.

Haben wir dies erledigt, brauchen wir nur noch die Optionen des Projekts aufzurufen und hier den Eintrag frmMain auszuwählen (siehe Bild 1).

Einstellen der Startform frmMain

Bild 1: Einstellen der Startform frmMain

Starten wir das Projekt nun, wird die Form frmMain angezeigt.

Startform über die Prozedur Main öffnen

Die zweite Möglichkeit ist das Öffnen des Fensters per Code. Wenn wir das Startformular frmMain per Code öffnen wollen, statt über die Eigenschaft, entfernen wir es zunächst aus der Eigenschaft Project: Startup Object und wählen dort den Wert Sub Main aus (siehe Bild 3).

Einstellen der Startprozedur Main

Bild 2: Einstellen der Startprozedur Main

Diese Prozedur müssen wir nun auch noch anlegen. Dazu fügen wir dem Projekt mit dem Kontextmenübefehl Add|Add Module .TWIN supporting Unicode ein neues Modul hinzu (siehe Bild 2). Das neue Modul benennen wir in mdlMain um.

Hinzufügen eines Moduls zum Projekt

Bild 3: Hinzufügen eines Moduls zum Projekt

Dieses öffnen wir nun und fügen die folgende Prozedur hinzu:

Sub Main()
     frmMain.Show
End Sub

Die einzige Anweisung der Prozedur besteht aus dem Objekt frmMain und der Methode Show. Jede Code behind-Klasse eines Form-Elements stellt die Eigenschaften und Methoden der Form-Klasse zur Verfügung, so zum Beispiel Show.

Um die Eigenschaften und Methoden dieser Klasse zu nutzen, müssen wir den Klassennamen angeben, der im Klassenmodul hinter dem Schlüsselwort Class angegeben ist. Sollte bei Dir die Klasse also einmal anders benannt sein als die Klassendatei (diese beiden sind nicht zu verwechseln), verwende den Klassennamen.

Das Codefenster sieht nun wie in Bild 4 aus. Starten wir die Anwendung nun erneut, erscheint das Fenster frmMain genauso, als wenn wir es als Startobjekt festgelegt hätten.

Anlegen der Startprozedur Main

Bild 4: Anlegen der Startprozedur Main

Damit wir sehen, dass tatsächlich die Prozedur das Fenster geöffnet hat, fügen wir dieser noch eine Meldung hinzu:

MsgBox "Vor dem Öffnen"
frmMain.Show
MsgBox "Nach dem Öffnen"

Die erste Meldung wird vor dem Anzeigen des Fensters eingeblendet, die zweite unmittelbar danach.

Forms schließen

Bisher sehen wir nur die X-Schaltfläche oben rechts als Möglichkeit, das Fenster zu schließen. Außerdem können wir durch einen linken Mausklick auf das Anwendungs-Icon das Systemmenü aus Bild 5 anzeigen. Dieses erscheint auch, wenn wir mit der rechten Maustaste auf eine beliebige Stelle der Titelleiste klicken.

Systemmenü

Bild 5: Systemmenü

Gegebenenfalls möchten wir aber eine eigene Schaltfläche zum Schließen des Fensters nutzen. Das erledigen wir, indem wir zunächst eine Schaltfläche zum Fenster hinzufügen.

Schaltfläche anlegen

Dazu aktivieren wir die Anzeige des Entwurfs des Fensters und klicken in der Toolbox einfach auf das Icon für die Schaltfläche. Dann ziehen wir im Entwurf einen Rahmen von der gewünschten Größe der anzulegenden Schaltfläche auf. Anschließend stellen wir im Eigenschaftsfenster den Namen auf cmdUnload und die Beschriftung auf Unload ein (siehe Bild 6).

Anlegen einer Schaltfläche

Bild 6: Anlegen einer Schaltfläche

Danach hinterlegen wir eine Ereignisprozedur für das Ereignis Click der Schaltfläche. Das gelingt ganz einfach, indem wir doppelt auf den Entwurf der Schaltfläche klicken. twinBASIC öffnet nun den Code-Editor mit der automatisch angelegten Prozedur. Dieser fügen wir gleich die Anweisung zum Schließen des aktuellen Fensters hinzu. Dabei gibt es allerdings verschiedene Varianten.

Fenster schließen beziehungsweise entladen

Um ein Fenster per Code zu schließen, gibt es mindestens die folgenden Möglichkeiten:

  • Unload Me: Schließt das Formular und entfernt das Formular aus dem Speicher.
  • Me.Close: Schließt das Formular, dieses bleibt jedoch im Speicher erhalten.
  • SendMessage: Ein API-Befehl, der das mit dem Handle referenzierte Fenster und alle enthaltenen Elemente zuverlässig terminiert.

Im Formular frmMain haben wir noch zwei weitere Schaltflächen untergebracht, um alle drei Methoden ausprobieren zu können. Die übrigen Schaltflächen heißen cmdClose und cmdSendMessage (siehe Bild 7).

Schaltflächen mit verschiedenen Methoden zum Schließen des aktuellen Fensters

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Visual Basic Entwickler:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar