4 Erweiterte Grundlagen
Dieses Kapitel widmet sich einigen fortgeschrittenen Themen: dem Umgang mit Ereignissen, Feldern und Strukturen sowie der Modularisierung von Programmen.
Bei der Bedienung von Windows-Programmen finden immer wieder Ereignisse statt, deren Erkennung, Behandlung und Steuerung Thema dieses Kapitels ist. Hinzu kommen wichtige Programmierelemente wie Felder, Strukturen, Prozeduren und Funktionen.
4.1 Steuerelemente aktivieren

Neben so offensichtlichen Eigenschaften und Ereignissen wie Text oder Click gibt es weitere Eigenschaften, Methoden und Ereignisse von Steuerelementen, die den Ablauf und die Benutzerführung innerhalb eines Windows-Programms verbessern können. Einige von ihnen sollen im Folgenden vorgestellt werden.
4.1.1 Ereignis Enter

Das Ereignis Enter eines Steuerelements tritt immer dann auf, wenn der Benutzer das betreffende Steuerelement angewählt, also zum aktuellen Steuerelement gemacht hat.
Steuerelemente können per Maus oder per Tastatur angewählt werden. Wird z. B. ein Kontrollkästchen per Maus angewählt, so ändert sich auch sein Zustand (Häkchen an/aus). Wird es jedoch per Tastatur angewählt, ändert sich der Zustand nicht. In beiden Fällen wurde es aber zum aktuellen Steuerelement, es ist also das Ereignis Enter eingetreten.
Im nachfolgenden Programm im Projekt EreignisEnter soll mithilfe des Ereignisses Enter zu einzelnen Elementen eines Eingabeformulars jeweils eine passende Hilfestellung erscheinen, siehe Abbildung 4.1.
Abbildung 4.1 Ereignis Enter
Der Programmcode:
Public Class Form1
Private Sub Form1_Load(...) Handles MyBase.Load
lstPaketdienst.Items.Add("DHL")
lstPaketdienst.Items.Add("Hermes")
lstPaketdienst.Items.Add("UPS")
End Sub
Private Sub Form1_Activated(...
) Handles MyBase.Activated
lblHilfe.Text = ""
End Sub
Private Sub txtName_Enter(...
) Handles txtName.Enter
lblHilfe.Text =
"Bitte geben Sie Nachname, Vorname ein"
End Sub
Private Sub chkKunde_Enter(...
) Handles chkKunde.Enter
lblHilfe.Text = "Kreuzen Sie hier an," &
" ob Sie bereits Kunde sind"
End Sub
Private Sub optKreditkarte_Enter(...
) Handles optKreditkarte.Enter,
optLastschrift.Enter,
optÜberweisung.Enter
lblHilfe.Text =
"Wählen Sie Ihre Zahlungsform aus"
End Sub
Private Sub lstPaketdienst_Enter(...
) Handles lstPaketdienst.Enter
lblHilfe.Text = "Wählen Sie Ihren" &
" bevorzugten Paketdienst aus"
End Sub
End Class
Listing 4.1 Projekt »EreignisEnter«
Zur Erläuterung:
- Das Listenfeld wird wie gewohnt beim Ereignis Form1_Load gefüllt.
- Das Ereignis Form1_Activated tritt kurze Zeit darauf ein, wenn das Formular zur Benutzung bereitsteht. In diesem Moment wird das Label mit dem Hilfetext geleert. Dadurch wird gewährleistet, dass es leer ist, unabhängig davon, welches Steuerelement zu Beginn das aktuelle ist.
- Zum Ereignis Enter der einzelnen Steuerelemente (Textfeld, Kontrollkästchen, Optionsschaltflächen und Listenfeld) gibt es jeweils eine eigene Ereignisprozedur. Sie sorgt dafür, dass der zugehörige Hilfetext angezeigt wird. Der Hilfetext zu den drei Optionsschaltflächen wird in einer gemeinsamen Ereignisprozedur erzeugt.
Die bisher genutzten Ereignisprozeduren wurden einfach per Doppelklick auf das Steuerelement bzw. das Formular erzeugt. In diesem Abschnitt wurde eine weitere Möglichkeit dazu genutzt: Im Eigenschaftenfenster können Sie auf die Ansicht Ereignisse wechseln, indem Sie das Symbol mit dem Blitz anklicken.
Abbildung 4.2 Liste der Ereignisse
Es erscheint dann eine Liste aller Ereignisse, die zu dem aktuellen Steuerelement eintreten können. Unterhalb der Liste steht eine Erläuterung zu dem jeweiligen Ereignis (siehe Abbildung 4.2). Falls Sie einen Doppelklick auf einem Ereignis ausführen, dann wird der Rahmen der zugehörigen Ereignisprozedur erzeugt (siehe Abbildung 4.3).
Abbildung 4.3 Rahmen der Ereignisprozedur
4.1.2 Eigenschaften Enabled und Visible

Fast jedes Steuerelement verfügt über die Eigenschaften Enabled (= anwählbar, benutzbar) und Visible (= sichtbar). Weisen Sie der Eigenschaft Enabled eines Steuerelements den Wert False zu, so wird es vorübergehend gesperrt, wenn seine Benutzung nicht sinnvoll oder riskant ist.
Ein gesperrtes Steuerelement ist nur noch abgeblendet sichtbar. Dadurch erreichen Sie eine bessere Benutzerführung, da der Benutzer immer jeweils nur diejenigen Steuerelemente verwenden kann, die zu einem sinnvollen Ergebnis führen.
In diesem Zusammenhang wird auch, allerdings seltener, die Eigenschaft Visible auf den Wert False gesetzt, um ein Steuerelement ganz unsichtbar zu machen.
Im nachfolgenden Programm im Projekt EnabledVisible hat der Benutzer die Möglichkeit, zwei Zahlen in zwei Textfeldern einzugeben. Erst wenn beide Textfelder nicht mehr leer sind,
- wird der zuvor abgeblendete erste Button zum Addieren der beiden Zahlen aktiviert
- und der zuvor unsichtbare zweite Button zum Addieren der beiden Zahlen sichtbar gemacht.
Public Class Form1
Private Sub txtEingabe1_TextChanged(...
) Handles txtEingabe1.TextChanged,
txtEingabe2.TextChanged
If txtEingabe1.Text <> "" And
txtEingabe2.Text <> "" Then
cmdRechnen1.Enabled = True
cmdRechnen2.Visible = True
Else
cmdRechnen1.Enabled = False
cmdRechnen2.Visible = False
End If
End Sub
Private Sub cmdRechnen1_Click(...
) Handles cmdRechnen1.Click,
cmdRechnen2.Click
Try
lblAusgabe.Text =
Convert.ToDouble(txtEingabe1.Text) +
Convert.ToDouble(txtEingabe2.Text)
Catch ex As Exception
lblAusgabe.Text = 0
End Try
End Sub
End Class
Listing 4.2 Projekt »EnabledVisible«
Zur Erläuterung:
- Zu Beginn ist nur ein deaktivierter Button sichtbar, siehe Abbildung 4.4.
Abbildung 4.4 Enabled und Visible vor der Eingabe
- Das Ereignis TextChanged eines Textfelds zeigt an, dass sich der Inhalt geändert hat. Da beide Textfelder zu Beginn leer sind, wird dieses Ereignis aufgerufen, sobald in einem der beiden Textfelder eine Eingabe vorgenommen wurde.
- Die TextChanged-Ereignisse führen zum Aufruf derselben Prozedur (Handles txtEingabe1.TextChanged, txtEingabe2.TextChanged). Innerhalb der Prozedur wird der Inhalt beider Textfelder geprüft.
- Sind beide Textfelder gefüllt, werden die Eigenschaft Enabled des ersten Buttons und die Eigenschaft Visible des zweiten Buttons auf True gesetzt. Der erste Button wird also aktiviert und der zweite Button sichtbar gemacht, siehe Abbildung 4.5.
Abbildung 4.5 Enabled und Visible nach der Eingabe
- Der Vorgang wird wieder rückgängig gemacht, falls mindestens eines der beiden Textfelder leer ist.
Übung
Erstellen Sie eine Anwendung mit einem Listenfeld, das mit einigen Elementen gefüllt und mit einem deaktivierten Button ausgestattet ist, siehe Abbildung 4.6. Der Button soll nur aktiviert sein, wenn ein Element markiert ist, siehe Abbildung 4.7. Sobald der Benutzer den Button drückt, wird das aktuell markierte Element aus dem Listenfeld gelöscht. Sobald die Liste leer ist, wird der Button deaktiviert. Er wird auch deaktiviert, wenn kein Element im Listenfeld markiert ist.
Abbildung 4.6 Oberfläche vor dem Markieren
Abbildung 4.7 Oberfläche nach dem Markieren
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.