Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung

...powered by haas.homelinux.net...

Einstieg in VB.NET von René Martin
- Für Programmiereinsteiger -
Einstieg in VB.NET
gp Kapitel 1 Die Grundlagen
  gp 1.1 Nach der Installation
  gp 1.2 Der erste Start
  gp 1.3 Das erste Formular
  gp 1.4 Eigenschaften
    gp 1.4.1 Regeln für Namen
    gp 1.4.2 Die Eigenschaften
  gp 1.5 Die Toolbox
  gp 1.6 Das Meldungsfenster
    gp 1.6.1 Die Code-Eingabe für die MessageBox
    gp 1.6.2 Ein Wort zum »alten« Visual Basic
    gp 1.6.3 Die Code-Eingabe allgemein
  gp 1.7 Ein Textfeld
  gp 1.8 Texte verketten
  gp 1.9 Andere Zeichen
    gp 1.9.1 Noch ein Wort zum Code-Tippen
    gp 1.9.2 Ein Wort zur Syntax
  gp 1.10 Variablen
  gp 1.11 Ein theoretischer Exkurs: Werte- und Referenztypen
  gp 1.12 Zuweisen von Werten an Variablen
  gp 1.13 Verzweigungen
  gp 1.14 Einige Hilfen für den Benutzer
    gp 1.14.1 Setze den Cursor in ein Textfeld
    gp 1.14.2 Ok und Abbrechen
    gp 1.14.3 Die Reihenfolge der Steuerelemente
  gp 1.15 Ein zweites Textfeld
    gp 1.15.1 Vergleiche
  gp 1.16 Rechnen in Basic
  gp 1.17 Optionsfelder
    gp 1.17.1 Schnell und ordentlich mehrere Steuerelemente platzieren
  gp 1.18 Ein zweites Gruppenfeld
  gp 1.19 Dynamische Steuerelemente
  gp 1.20 Das Ereignis »Klick«
  gp 1.21 Prozeduren
  gp 1.22 Ein theoretischer Exkurs: Prozeduren
  gp 1.23 Module
  gp 1.24 Ein theoretischer Exkurs: Objekte, Eigenschaften und Methoden
    gp 1.24.1 Objekte
    gp 1.24.2 Methoden
    gp 1.24.3 Eigenschaften
  gp 1.25 Zusammenfassung


Galileo Computing

1.6 Das Meldungsfenster  downtop

Der Benutzer soll das Formular über die Abbrechen-Schaltfläche schließen können. Mit einem Doppelklick auf den Button gelangen Sie in den Code oder genauer: Sie gelangen zwischen die beiden Zeilen

Private Sub butAbbrechen_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) 
Handles butAbbrechen.Click

End Sub

Die lange erste Zeile steht nur für das auslösende Ereignis, wenn der Benutzer auf die Schaltfläche klickt. Das Objekt, welches den Befehl auslöst, heißt »butAbbrechen«. Das Ereignis »Click« steht für das Mausklicken des Benutzers, aber auch dafür, dass der Benutzer mit der Tabulator-Taste auf den Button »springen« und dann mit (Enter) den Code auslösen kann, der sich dahinter verbirgt.

In diesen Code muss der Befehl für »Schließe die Form«. Die Form trägt den Namen »frmKaffee«. Gibt man den Namens dieses Objekts ein und fügt danach einen Punkt an, dann erscheint eine kleine Auswahlliste von Dingen, die ich bisher noch nicht erläutert habe. Nach dem Punkt muss »ActiveForm« ausgewählt werden. Und diesem Objekt kann befohlen werden, dass es sich schließen soll (natürlich wieder mit einem Punkt). »Close« heißt dies in der Sprache von VB.NET. Die ganze Zeile lautet dann:

frmKaffee.ActiveForm.Close

Es geht ein klein wenig einfacher. Der erste Teil kann mit »Me« abgekürzt werden. Also:

Me.Close

Diesen Befehl kann man überall verwenden, ohne zu wissen, wie die Userform heißt. Ein Test beweist, dass man mit »Abbrechen« das Formular schließen kann.

Zurück zum Formular gelangt man über das Register. Das eine ist für die Entwurfsansicht zuständig, das heißt dort wird gebastelt. Im anderen steht der Code.

Auch die Ok-Schaltfläche soll eine Funktion haben. Klickt der Benutzer auf »Ok«, so soll er eine Meldung erhalten, dass es nun Kaffee gibt. Ein Doppelklick führt zu dem Code. Zwischen die beiden Zeilen

Private Sub butOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles butOk.Click

End Sub

wird der Befehl für das Meldungsfenster geschrieben. Er lautet:

MessageBox

Galileo Computing

1.6.1 Die Code-Eingabe für die MessageBox  downtop

Wie geht es dann weiter? Die Messagebox ist ein Objekt, und nach Objekten steht immer ein Punkt, also:

MessageBox.

Schon erscheint eine der tollen Hilfen der Programmiersprache: Es wird angezeigt, wie es weitergeht, das heißt, es wird gezeigt, was die MessageBox kann – sie kann angezeigt werden:

MessageBox.Show

Ohne zu weit vorgreifen zu wollen, sei Folgendes gesagt: Show ist eine Methode, das heißt, sie bewirkt etwas. Nach einer Methode steht immer eine Klammer. Wird also nach MessageBox.Show die öffnende Klammer eingegeben, dann erscheint eine weitere Hilfe: ein Quickinfo. Es verrät, dass zuerst ein »text« stehen muss. Mehr noch: »text« wird erklärt als »Der im Meldungsfenster anzuzeigende Text«. Und der wird – wie in vielen anderen Programmiersprachen auch – in Anführungszeichen gesetzt. Also beispielsweise:

MessageBox.Show("Achtung: Jetzt gibt es Kaffee!")

Das reicht aus, die Klammer wird geschlossen, nun speichern und starten. Tatsächlich: Jetzt gibt es Kaffee. Vielleicht hat es Sie gewundert, dass das Meldungsfenster zwölf Varianten zur Verfügung stellt und dass die erste nicht nur einen Eintrag, sondern sieben Parameter benötigt. Der Hintergrund ist folgender: Man kann dieser Funktion eine oder mehrere Varianten geben. Unsere Möglichkeit – »melde nur Text« – finden Sie unter der Nummer 6. Sind Sie also unsicher, ob Ihre Eingabe korrekt ist, so wechseln Sie mit den Pfeiltasten auf der Tastatur oder mit der Maus nach oben und unten. So schön es ist, dass uns verschiedene Varianten zur Verfügung stehen, so knauserig ist VB.NET: Es verlangt unbedingt eine der vorgeschlagenen Möglichkeiten.

Man kann die Meldung allerdings noch verfeinern. Wird die letzte Klammer gelöscht, oder noch besser: Wenn Sie vor die schließende Klammer klicken, dann können Sie mit dem Symbol »Zeigt die Parameterinformation ... an« das Quick-Info wieder herholen. Es geht noch weiter. Nach dem »text« folgt als Trennzeichen ein Komma und danach wird die »caption« eingegeben. Auch sie steht in Anführungszeichen, weil auch sie ein String, das heißt eine Zeichenkette, ist. Wie wäre es mit »Meine Kaffeemaschine«?

Abbildung

Abbildung 1.11   Das Meldungsfenster – die Caption

Nach dem zweiten Komma erscheint eine Liste der Möglichkeiten für die »buttons«. Alle beginnen mit »MessageBoxButtons«. Die sechs Möglichkeiten stehen für die sechs Varianten der Schaltflächen. Es bedeuten:

Tabelle 1.1   Die verschiedenen Schaltflächen im Meldungsfenster
Bezeichnung Bedeutung
AbortRetryIgnore Abbrechen, Wiederholen, Ignorieren
OK OK
OKCancel OK, Abbrechen
RetryCancel Wiederholen, Abbrechen
YesNo Ja, Nein
YesNoCancel Ja, Nein, Abbrechen

Abbildung

Abbildung 1.12   Eine Variante des Meldungsfensters

Die anderen Schaltflächen kennen Sie von anderen Anwendungen:

Abbildung

Abbildung 1.13   Ein Beispiel aus Word

Der nächste Parameter verlangt ein Symbol. Die Symbole beginnen mit »MessageBoxIcon.« und heißen:

Tabelle 1.2   Die verschiedenen Symbole im Meldungsfenster
Bezeichnung Bedeutung Symbol
Asterisk Stern  
Error Fehler  
Exclamation Ausrufezeichen  
Hand Hand  
Information Information  
None Kein Symbol  
Question Fragezeichen  
Stop Stop  
Warning Warnung  

Achtung: Unter Windows funktionieren nur vier der Symbole: »Exclamation«, »Information«, »Question« und »Warning« – die übrigen Varianten zeigen eine dieser vier Möglichkeiten an.

Abbildung Abbildung Abbildung Abbildung

Abbildung 1.14   Die vier möglichen Symbole

Soll der Fokus nicht auf der ersten Schaltfläche sitzen, sondern auf einer anderen, dann wird »MessageBoxDefaultButton« auf »Button1«, »Button2« oder »Button3« gesetzt. Damit kann der Benutzer leichter mit der (Enter)-Taste die wichtigste Taste aktivieren. Und schließlich könnte nach dem letzten Komma die Laufrichtung des Textes festgelegt werden, was für arabische oder hebräische PCs interessant ist.

Die ganze Zeile sieht dann folgendermaßen aus:

Private Sub cmdOK(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles cmdOK.Click
MessageBox.Show("Achtung: Jetzt gibt es Kaffee!", 
"Meine Kaffeemaschine", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information,
MessageBoxDefaulButton.Buttons2, MessageBoxOptions.DefaultDesktopOnly)
End Sub

Das Ergebnis sieht dann folgendermaßen aus:

Abbildung

Abbildung 1.15   Das Meldungsfenster


Galileo Computing

1.6.2 Ein Wort zum »alten« Visual Basic  downtop

Noch immer werden die Visual Basic-Befehle unterstützt. Das heißt, man könnte statt »MessageBox« den »alten« Befehl »MsgBox« verwenden, dessen Syntax zwar ähnlich, aber dennoch etwas anders ist. In diesem Buch wird darauf verzichtet, die alten Befehle zu erklären. Wer sie kennt und unbedingt verwenden möchte – bitte schön. Die VB.NET-Befehle haben den großen Vorteil, dass sie durchgängig gleich strukturiert sind, das hilft enorm beim Erlernen.


Galileo Computing

1.6.3 Die Code-Eingabe allgemein  toptop

Ein paar theoretische Bemerkungen zur Code-Eingabe:

Texteingabe und -korrektur im Codefenster erfolgen nach den gleichen Regeln wie in der Textverarbeitung: Zu korrigierende Zeichen werden mit der Korrekturtaste (Rückschritt) oder der Taste (Entf) gelöscht, Text kann an beliebigen Stellen eingefügt werden. Mit der (Einfg) kann in den Überschreibmodus gewechselt werden: Der Cursor erscheint dann als Rechteck und löscht beim Schreiben die früheren Zeichen. Um Text zu markieren, können Sie die Maus verwenden und mit gedrückter linker Maustaste über den Text ziehen oder mit gedrückter (Umschalt)-Taste + Pfeiltasten den Cursor über den Text bewegen. Der gesamte Code, das heißt das ganze Modul, kann auch mit (Strg) + (A) oder dem Menü Bearbeiten Alles Auswählen markiert werden. Zum Kopieren und Ausschneiden kann das Menü Bearbeiten Kopieren und Bearbeiten Einfügen verwendet werden, respektive: Bearbeiten Ausschneiden und Bearbeiten Einfügen. Kopierte Textteile landen in der Toolbox im »Zwischenablagering«. Von dort können mit Hilfe der rechten Maustaste also auch ältere Texte, die sich noch im Zwischenspeicher befinden, herausgeholt werden.

Textbausteine gibt es nicht, dafür aber die zweite Möglichkeit, Code-Schnipsel im Register »Allgemein« in der Toolbox abzulegen. Texte im Code können markiert und in die Toolbox gezogen werden, oder man drückt beim Herausziehen die (Strg)-Taste – dann werden sie hineinkopiert. In der Toolbox wird nun der Beginn angezeigt. Die Texte können jederzeit wieder herausgezogen werden.

Werden Textteile kopiert, dann erscheinen sie im »Zwischenablagering«. Auch dort können sie jederzeit mit gedrückter Maustaste herausgezogen werden.

Abbildung

Abbildung 1.16   Eine der vielen angenehmen Hilfen in VB.NET

Man kann markierte Textteile innerhalb des Codes mit der Maus verschieben – mit der Drag&Drop-Funktion. Ebenso können Textteile mit der (Strg)-Taste durch Ziehen kopiert werden.

Wenn sich der Cursor am Anfang einer Zeile befindet und dort (Enter) gedrückt wird, dann wird eine neue Codezeile oberhalb eingefügt. Die vier Pfeiltasten bewegen den Cursor Zeile für Zeile oder Zeichen für Zeichen nach oben, unten, links oder rechts. Die Tasten (Bild oben) beziehungsweise (Bild unten) blättern eine Bildschirmseite nach oben oder unten. Mit (Strg) + (Pfeil oben) beziehungsweise (Strg) + (Pfeil unten) blättern Sie in die nächste oder vorhergehende Prozedur. Der Einzug wird automatisch vorgenommen, was sehr hilfreich ist.

Das alles dürfte aus der Textverarbeitung bekannt sein.

Lange Textzeilen

Normalerweise entspricht eine Textzeile einem Befehl. Nach dem Drücken von (Enter) wird die Eingabe beendet und der eingegebene Text wird auf seine Richtigkeit überprüft. Problemlos können die Anweisungszeilen durch Leerzeilen voneinander getrennt werden – leere Zeilen werden übergangen und haben keinerlei Funktion, außer dass sie beim Lesen helfen.

Es kann nun passieren, dass ich eine sehr lange Befehlszeile eingeben muss, zum Beispiel:

MessageBox.Show("Möchten Sie, dass Ihr Computer zerstört wird?", 
" Odyssee 2000", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning, 
MessageBoxDefaulButton.Buttons1, MessageBoxOptions.DefaultDesktopOnly)

Ein automatischer Umbruch, wie von der Textverarbeitung bekannt, findet erst nach 1.024 Zeichen statt: Der Text fließt bis dahin immer weiter nach rechts. Um einen manuellen Umbruch zu organisieren, kann der Text in mehrere Zeilen geteilt werden. Diese werden durch eine Leerstelle (sie ist unbedingt nötig!), der ein Unterstrich am Ende der Zeile folgt, getrennt.

MessageBox.Show _
("Ihr Computer wird nun zerstört", _
"Odyssee 2000", MessageBoxButtons.YesNoCancel, _
MessageBoxIcon.Warning, _
MessageBoxDefaulButton.Buttons1, _
MessageBoxOptions.DefaultDesktopOnly)

Die Option könnte über Extras Optionen ausgeschaltet werden. Dort finden Sie im Ordner Text-Editor Basic die Einstellung Zeilenumbruch. Mit ihrer Hilfe könnte man mehrzeilig schreiben, was aber sicherlich nur wenige Basic-Programmierer tun.

Umgekehrt können mehrere logische Programmierzeilen in eine Textzeile geschrieben werden. Dann werden sie mit einem Doppelpunkt (»:«) getrennt, wie beispielsweise folgende drei Befehlszeilen:

MessageBox.Show("Achtung!") : Beep() : Beep()

Hiervon ist in der Regel abzuraten, weil der Code sehr schnell unübersichtlich wird.

Kommentare und optische Gliederungen

Häufig wünscht der Programmierer seine Programme zu kommentieren; sei es, um sie besser zu strukturieren, sei es, um anderen Programmierern, die damit weiterarbeiten, schnell einen Überblick zu verschaffen. Manchmal will ein Kunde nach Monaten, dass ich an dem alten Programm etwas ändere. Woher soll ich aber wissen, was ich vor Monaten gemacht habe? In so einem Fall sehe ich in den Kommentaren nach. Sollte jemand mal mit meinen Programmen weiterarbeiten, dann könnte er an den Kommentaren erkennen, was ich gemacht und mir dabei gedacht habe. Zwar gebe ich normalerweise meine Programme nicht her, aber man könnte es theoretisch tun. Einmal hatte ich sogar den Fall, dass eine Firma behauptete, ich hätte etwas falsch programmiert. Da konnte ich ihnen zeigen, dass sie nicht Recht hatten, denn im Kommentar stand, was wir damals ausgemacht hatten.

Kommentare können überall eingefügt werden: Sie werden mit einem Apostroph »'« eingeleitet, der innerhalb einer Zeile stehen kann:

MessageBox.Show   ("Habe nun ach...")   'Dies ist von Goethe!

oder am Anfang einer Zeile:

' Nun folgt ein Meldungsfenster:
MessageBox.Show _
   ("Philosophie, Juristerei und Medizin")
' Dies war das Meldungsfenster

Mit dem Anführungszeichen (Apostroph) meine ich den Haken über dem Zahlenzeichen, neben dem Ä, nicht den Akzent über dem Ü. Der ist für meinen Vornamen reserviert.

Kommentare können ebenso am Beginn einer Zeile durch ein »rem« (remark) eingeleitet werden:

Rem Nun folgt ein Meldungsfenster:
MessageBox.Show("und leider auch Theologie")
Rem Dies war das Meldungsfenster

Dieses »rem« wirkt etwas altmodisch und erfordert mehr Tipparbeit als Apostrophe. Sonst gibt es keinen Grund, auf »rem« zu verzichten. Ein kleiner Unterschied besteht zwischen »rem« und dem Apostroph: Das Apostroph kann am Ende einer Zeile stehen und diese kommentieren, »rem« nicht!

Während des Programmierens kann mit »rem« oder Apostroph eine Zeile ausgeschaltet werden – besonders, wenn sie später noch verwendet wird.

Eine praktische Hilfe finden Sie in der Symbol-Leiste »Text-Editor«. Dort gibt es zwei Symbole »Die ausgewählten Textzeilen auskommentieren« und »Hebt den Kommentar der ausgewählten Textzeilen auf.« Dies ist praktisch, wenn man ein Programm testen möchte, aber will, dass einige bestimmte Zeilen nicht ausgeführt werden. Diese kann man dann markieren und auskommentieren, also ausschalten.

Abbildung

Abbildung 1.17   Die beiden Symbole zum Kommentieren

Kommentare erscheinen in grüner Schrift, was Sie im Menü Extras Optionen im Ordner Umgebung Schriftarten und Farben unter Elementvordergrund Kommentartext ändern können. Wenn Sie es unbedingt verändern müssen, dann sollten Sie nicht Schwarz nehmen, denn die Kommentare sollen auffallen. Kommentare werden nicht abgearbeitet, sondern dienen zur Erläuterung, sodass der Programmierer bestimmte Codestellen entweder schnell findet oder Erläuterungen zum Code hat.

Auch Rot ist eine schlechte Farbe für Kommentarzeilen, denn in Rot erscheinen Fehler. Und schließlich gibt es noch Farben, die das Auge nicht so gerne mag ... Vielleicht bleiben wir doch bei Grün.

Ein beliebtes Gestaltungsmittel, das Ordnung schafft, sind Kommentare in Kästen mit »*«, »-« oder »=«. Etwa so:

'***********************************************
'*                                             *
'*     Und nun für unsere Goethe-Freunde       *
'*                                             *
'***********************************************

MessageBox.Show _
   ("durchaus studiert mit heißem Bemühn.")

'***********************************************
'*                                             *
'*            Heute: Faust I                   *
'*                                             *
'***********************************************

Zugegeben: Solch ein gestalterisches Werk erfordert (Tipp-)Arbeit, strukturiert allerdings das Programm sehr gut.

Einrücken von Zeilen

Eine weitere Gliederungsmöglichkeit ist das Einrücken von Zeilen, das Basic für uns vornimmt. Dadurch werden Ebenen gekennzeichnet, was bei Verschachtelungen hilfreich ist, und die Übersichtlichkeit erhöht. Ich halte diese Einstellung für wichtig, da sie die zusammengehörigen Blöcke deutlich macht. Man könnte sie über Extras Optionen (Kategorie Text-Editor Basic Tabstopps) deaktivieren.

Gliederungen

Bei allen Gliederungen, die VB.NET uns zur Verfügung stellt, kann der Code selbst in Teile untergliedert werden. Dazu kann er mit der Maus markiert werden. Nun befindet sich im Kontextmenü die Option »Gliederung«. Wird sie ausgewählt, so kann dieser Teil über die drei Pünktchen am linken Rand ein- und ausgeschaltet werden. Gerade bei längeren Projekten ist dies eine sinnvolle Hilfe.

Nochmals meine Bitte: Auch wenn ich hier im Buch nur relativ wenig kommentiere (sonst wird der Code zu lang), bitte kommentieren Sie immer. Und alles!

  

VB.NET

Einstieg in ASP.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML