2.3 Panel, Zeitgeber, Textfeld, Zahlenauswahlfeld 

Windows-Programmierung mit Visual Basic besteht aus zwei Teilen: der Arbeit mit visuellen Steuerelementen und der Programmierung mit der Sprache. Beides soll in diesem Buch parallel vermittelt werden, damit die eher theoretischen Abschnitte zur Programmiersprache durch eine anschauliche Praxis vertieft werden können.
Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbeitet, bevor im nächsten Abschnitt die Verzweigungen zur Programmsteuerung vorgestellt werden.
2.3.1 Panel 

Container
Ein Panel dient normalerweise als Container für andere Steuerelemente. In diesem Abschnitt wird es zur visuellen Darstellung eines Rechtecks und für eine kleine Animation genutzt.
Die Eigenschaften BackColor (Hintergrundfarbe), Location (Position) und Size (Größe) sind schon von anderen Steuerelementen bekannt.
Mithilfe des nachfolgenden Programms p0211 wird ein Panel durch Betätigung von vier Buttons um 10 Pixel nach oben, unten, links oder rechts verschoben. Es hat die Größe 100 x 100 Pixel, die Startposition X=100 und Y=100 sowie eine eigene Hintergrundfarbe. Die Bewegung wird mithilfe der Struktur Point durchgeführt.
Abbildung 2.11 Panel, Startzustand
Public Class frm0211
Private Sub cmdOben_Click( ... ) Handles ...
panMove.Location = New Point(_
panMove.Location.X, _
panMove.Location.Y - 10)
End Sub
Private Sub cmdUnten_Click( ... ) ...
panMove.Location = New Point(_
panMove.Location.X, _
panMove.Location.Y + 10)
End Sub
Private Sub cmdLinks_Click( ... ) Handles ...
panMove.Location = New Point(_
panMove.Location.X - 10, _
panMove.Location.Y)
End Sub
Private Sub cmdRechts_Click( ... ) Handles ...
panMove.Location = New Point(_
panMove.Location.X + 10, _
panMove.Location.Y)
End Sub
End ClassAbbildung 2.12 Panel nach Verschiebung
2.3.2 Zeitgeber 

Timer
Ein Zeitgeber (Timer) erzeugt in festgelegten Abständen Zeittakte. Diese Zeittakte sind Ereignisse, die der Entwickler mit Aktionen verbinden kann. Ein Zeitgeber kann wie jedes andere Steuerelement zum Formular hinzugefügt werden. Da es sich aber um ein nicht sichtbares Steuerelement handelt, wird er unterhalb des Formulars angezeigt. Auch zur Laufzeit ist er nicht sichtbar.
Intervall
Seine wichtigste Eigenschaft ist das Zeitintervall, in dem das Ereignis auftreten soll. Dieses Zeitintervall wird in Millisekunden angegeben.
Enabled
Die Eigenschaft Enabled dient zur Aktivierung bzw. Deaktivierung des Zeitgebers. Sie kann zur Entwicklungszeit oder zur Laufzeit auf True oder False gestellt werden.
Im nachfolgenden Programm p0212 erscheint zunächst ein Formular mit zwei Buttons. Betätigt man den Start-Button, so erscheint ein »x« in einem Bezeichnungsfeld. Alle 0,5 Sekunden erscheint automatisch ein weiteres »x«. Dies wird durch den Timer gesteuert, bei dem der Wert für die Eigenschaft Interval auf 500 gesetzt wurde. Nach Betätigung des Stop-Buttons kommt kein weiteres »x« hinzu.
Abbildung 2.13 Nach einigen Sekunden
Public Class frm0212
Private Sub timAnzeige_Tick( ... ) Handles ...
lblAnzeige.Text &= "x"
End Sub
Private Sub cmdStart_Click( ... ) Handles ...
timAnzeige.Enabled = True
End Sub
Private Sub cmdStop_Click( ... ) Handles ...
timAnzeige.Enabled = False
End Sub
End ClassÜbung p0213:
Erstellen Sie eine Windows-Anwendung. In der Mitte eines Formulars sollen zu Beginn vier Panels verschiedener Farbe der Größe 20 × 20 Pixel platziert werden. Sobald ein Start-Button betätigt wurde, sollen diese vier Panels sich diagonal in ca. 5–10 Sekunden zu den Ecken des Formulars bewegen, jedes Panel in eine andere Ecke.
Abbildung 2.14 Start-Zustand
Abbildung 2.15 Nach einigen Sekunden
Übung p0214:
Diese Übung gehört nicht zum »Pflichtprogramm«. Sie ist etwas umfangreicher, verdeutlicht aber die Möglichkeiten einer schnellen Visualisierung von Prozessen durch Visual Basic mit wenigen Programmzeilen.
Konstruieren Sie aus mehreren Panels einen Kran (Fundament, senkrechtes Hauptelement, waagrechter Ausleger, senkrechter Haken am Ausleger). Der Benutzer soll die Möglichkeit haben, über Buttons die folgenden Aktionen auszulösen:
- Haken um 10 Pixel ausfahren
- Haken um 10 Pixel einfahren
- Ausleger um 10 Pixel ausfahren
- Ausleger um 10 Pixel einfahren
- Kran um 10 Pixel nach rechts fahren
- Kran um 10 Pixel nach links fahren
- Kran um 10 Pixel in der Höhe ausfahren
- Kran um 10 Pixel in der Höhe einfahren
Denken Sie daran, dass bei vielen Bewegungen mehrere Steuerelemente bewegt werden müssen, da der Kran sonst seinen »Zusammenhalt« verliert. Manche Aktionen resultieren nur aus Größenveränderungen (Eigenschaften Width und Height), manche nur aus Ortsveränderungen, manche aus beidem.
Abbildung 2.16 Start-Zustand
Abbildung 2.17 Nach einigen Aktionen
2.3.3 Textfelder 

Eingabefeld
Ein Textfeld dient in erster Linie dazu, die Eingabe von Text oder Zahlen vom Benutzer entgegenzunehmen. Diese Eingaben werden in der Eigenschaft Text des Textfelds gespeichert. Das Aussehen und das Verhalten eines Textfelds werden unter anderem durch folgende Eigenschaften gekennzeichnet:
- MultiLine: Steht MultiLine auf True, so kann bei der Eingabe und bei der Anzeige mit mehreren Textzeilen gearbeitet werden.
- ScrollBars: Man kann ein Textfeld mit vertikalen und/oder horizontalen Bildlaufleisten zur Eingabe und Anzeige längerer Texte versehen.
- MaxLength: Mit dieser Eigenschaft lässt sich die Anzahl der Zeichen des Textfelds beschränken. Ist keine Beschränkung vorgesehen, kann das Textfeld 32K Zeichen aufnehmen.
- PasswordChar: Falls für diese Eigenschaft im Entwurfsmodus ein Platzhalter-Zeichen eingegeben wurde, wird während der Laufzeit für jedes eingegebene Zeichen nur dieser Platzhalter angezeigt. Diese Eigenschaft wird vor allem bei Passwort-Abfragen verwendet.
Passwort
Im nachfolgenden Programm p0215 kann der Benutzer in einem Textfeld einen Text eingeben. Nach Betätigung des Buttons Ausgabe wird der eingegebene Text in einem zusammenhängenden Satz ausgegeben.
Abbildung 2.18 Eingabe in Textfeld
Der Code lautet wie folgt:
Public Class frm0215
Private Sub cmdAusgabe_Click( ... ) Handles ...
lblAusgabe.Text = "Sie haben '" _
& txtEingabe.Text & "' eingegeben"
End Sub
End ClassZur Erläuterung:
- In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert. Die Eigenschaft wird in einen längeren Ausgabetext eingebettet.
Zahlen eingeben
Bei der Eingabe und Auswertung von Zahlen sind einige Besonderheiten zu beachten. Im nachfolgenden Programm, ebenfalls in Projekt p0215, kann der Benutzer in einem Textfeld eine Zahl eingeben. Nach Betätigung des Buttons Rechnen 1 wird der Wert dieser Zahl verdoppelt, das Ergebnis wird in einem Label darunter ausgegeben.
Public Class frm0215
[ ... ]
Private Sub cmdRechnen1_Click( ... ) Handles ...
lblAusgabe.Text = txtEingabe.Text * 2
End Sub
End ClassZur Erläuterung:
- Wenn eine Zeichenkette eingegeben wurde, die eine Zahl darstellt, dann wird sie implizit, d. h. automatisch, in eine Zahl umgewandelt, mit der dann gerechnet werden kann.
- Stellt die eingegebene Zeichenkette keine Zahl dar, kommt es zu einem Laufzeitfehler. Diese Situation sollte natürlich vermieden werden:
- Man kann vorher überprüfen, ob es sich bei der Zeichenkette um eine gültige Zahl handelt und entsprechend reagieren. Dies wird möglich, sobald man Verzweigungen zur Programmsteuerung beherrscht.
- Allgemein kann man Programme so schreiben, dass ein Programmabbruch abgefangen werden kann. Dies wird möglich, sobald man die Ausnahmebehandlung (siehe hierzu Kapitel 3, »Fehlerbehandlung«) beherrscht.
Ausnahmebehandlung
Einige Beispiele:
Abbildung 2.19 zeigt die Eingabe einer Zahl mit Nachkommastellen.
Abbildung 2.19 Eingabe einer Zahl mit Nachkommastellen
Die Eingabe einer Zeichenkette, z. B. »abc«, führt zu einer Ausnahme. Die Zeile, in der der Fehler auftritt, wird im Code markiert, damit der Fehler beseitigt werden kann (siehe Abbildung 2.20).
Abbildung 2.20 Markierung der Fehlerzeile nach Eingabe des Textes »abc«
Die Eingabe einer Zahl, bei der ein Punkt statt einem Komma zur Abtrennung von Nachkommastellen eingegeben wird, führt zu einem ganz anderen Rechenergebnis:
Abbildung 2.21 Eine Zahl mit einem Punkt vor den Nachkommastellen
Der Punkt wird ignoriert, die Zahl wird als 352 angesehen und führt so zu dem Ergebnis 704.
Val()
Eine Verbesserung, gleichzeitig aber eine Umstellung ergibt sich, wenn man die Funktion Val() verwendet. Die Eingabe einer Zeichenkette (z. B. »abc«) führt nicht mehr zu einer Ausnahme, da die Funktion Val() aus einer Zeichenkette den Wert 0 ermittelt. Mit 0 kann gerechnet werden.
Allerdings sollten die Zahlen nun in englischer Schreibweise eingegeben werden, also mit einem Punkt vor den Nachkommastellen.
Abbildung 2.22 Funktion Val()
Public Class frm0215
[ ... ]
Private Sub cmdRechnen2_Click( ... ) Handles ...
lblAusgabe.Text = Val(txtEingabe.Text) * 2
End Sub
End ClassZur Erläuterung:
- Der eingegebene Text wird mit der Funktion Val() in eine Zahl umgewandelt. Falls keine Zahl eingegeben wurde, ergibt sich als Wert 0.
2.3.4 Zahlenauswahlfeld 

NumericUpDown
Das Steuerelement Zahlenauswahlfeld (NumericUpDown) bietet eine andere Möglichkeit, Werte an ein Programm zu übermitteln. Die Werte können innerhalb selbst definierter Grenzen und in selbst definierten Schritten über zwei kleine Pfeiltasten ausgewählt werden.
Wichtige Eigenschaften des Steuerelements sind:
- Value: Bezeichnet zur Entwicklungszeit den Startwert und zur Laufzeit den vom Benutzer aktuell eingestellten Wert.
Value
- Maximum, Minimum: Bestimmt den größtmöglichen Wert und den kleinstmöglichen Wert der Eigenschaft Value. Es handelt sich also um die Werte, die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten erreicht werden können.
- Increment: Mit Increment wird die Schrittweite eingestellt, mit der sich der Wert (Eigenschaft Value) ändert, wenn der Benutzer eine der kleinen Pfeiltasten betätigt.
- DecimalPlaces: Bestimmt die Anzahl der Nachkommastellen in der Anzeige des Zahlenauswahlfelds.
ValueChanged
Das wichtigste Ereignis dieses Steuerelements ist ValueChanged. Es tritt bei der Veränderung der Eigenschaft Value ein und sollte anschließend zur Programmsteuerung verwendet werden.
Im nachfolgenden Programm p0216 werden alle diese Eigenschaften und das genannte Ereignis genutzt. Der Benutzer kann Zahlenwerte zwischen -5,0 und +5,0 in Schritten von 0,1 über ein Zahlenauswahlfeld einstellen. Der ausgewählte Wert wird unmittelbar in einem Label angezeigt.
Abbildung 2.23 Zahlenauswahlfeld
Die Eigenschaften wurden zur Entwicklungszeit wie folgt eingestellt:
- Value: Wert 2, die Anwendung startet bei dem Wert 2,0 für das Zahlenauswahlfeld
- Maximum, Minimum: Wert -5 und +5
- Increment: Wert 0,1
- DecimalPlaces: Wert 1, zur Anzeige einer einzelnen Nachkommastelle
Der Code lautet:
Public Class frm0216
Private Sub numEingabe_ValueChanged( ... ) Handles ...
lblAusgabe.Text = numEingabe.Value
End Sub
End Class


Jetzt online bestellen

















