VB -13: Message-Boxen

Einfache Kommunikation...

Nun wollen wir aber zur ersten Aufgabe für unseren Anwender kommen. Bevor wir zu komplizierteren Fragen übergehen, wollen wir erst einmal testen, ob unser Proband überhaupt schon zählen kann.

Um den Anwender darauf vorzubereiten, teilen wir ihm das kurz mit. Wir könnten das - wie bisher - einfach als Hinweis auf die Form schreiben (oder auch ein Label-Control verwenden). Wir nutzen jedoch eine enfache Forma der Kommunikation, die Euch allen aus x Windows-Programmen bereits bekannt ist, die Message-Box.

Es gibt verschiedene Arten von Messageboxen, sowohl vom Aussehen als auch von der Funktion her. Wir fangen mit einer einfachen Mitteilung an in der Form

        MsgBox "Mitteilung"
 

Zwischen den Anführungszeichen steht der Text, den der Anwender sehen soll. Eine solche MessageBox zeigt nur den Text ohne irgendwelche grafischen Symbole (dazu kommen wir später) und nur einen einzelnen Button mit der Aufschrift "OK", den der Nutzer drücken muß, bevor das Programm weitermacht.

Auf diese Art lassen sich vor allem kurze Hinweise, Fehlermeldungen und Warnungen an den Anwender übermitteln, ohne dafür eine eigene Form erstellen zu müssen.

Wir ändern unser Beispiel ab:

    Private Sub Form_Activate()
      KugelSpring          'Animation laufen lassen
      CurrentX = 1000      'positioniert den nachfolgenden Printbefehl X-Achse
      CurrentY = 2000      'positioniert den nachfolgenden Printbefehl Y-Achse
      Print "Viel Spaß mit Mathe-Max!"  'druckt Text direkt auf die Form
      Verzoegerung 2        '2 Sekunden Verzögerung
      Me.Cls               'Text löschen
      MsgBox "Wir wollen zählen üben!"
    End Sub
 

Nachdem die Animation abgelaufen ist (Ihr könnt sie übrigens jetzt auch durch ein kleines Apostroph Abschalten, wenn Euch das beim Testen zu zeitaufwendig ist), warten wir noch 2 Sekunden, löschen dann den Text von der Form mit der "Cls"-Methode und zeigen unsere MessageBox an.

Beispielprojekt laden

Jetzt könnte eigentlich unsere Zählübung anfangen. Wenn wir aber schonmal dabei sind, wollen wir uns auch gleich noch die etwas ausgefeilteren MessageBoxen anschauen.

Die obige Form der MessageBox läßt nur eine Anwtort zu (OK) und gibt auch kein Ergebnis zurück. Wir können in einer MessageBox jedoch auch einfache Standardfragen stellen (z.B. Ja/Nein, OK/Abbrechen). Damit wir die Antwort auch auswerten können, muß das Programm uns sagen können, welchen Button der User gedrückt hat. Wir nutzen die MessageBox als _Funktion_. Grundsätzllich gilt: Funktionen geben Werte zurück, Befehle/Statements führen nur etwas aus, ohne Rückgabewert. Das zeigt sich in der Schreibweise:

        Rückgabewert = MessageBox ("Frage", Optionen, Titel,...)
        

Welche Buttons angezeigt werden, müssen wir unter den Optionen angeben. Hier können wir unsere Frage auch durch ein kleines Standardsymbol unterstreichen.

Folgende Optionen stehen zur Auswahl:
Buttons
vbOKOnly 0 nur OK (default)
vbOKCancel 1 OK, Abbrechen
vbAbortRetryIgnore 2 Abbrechen, Wiederholen,Ignorieren
vbYesNoCancel 3 Ja, Nein, Abbrechen
vbYesNo 4 Ja, Nein
vbRetryCancel 5 Wiederholen, Abbrechen
Symbole
vbCritical 16 kritischer Hinweis
vbQuestion 32 Fragezeichen
vbExclamation 48 Warnung
vbInformation 64 Information

Es gibt noch weitere Optionen, die z.B. bestimmen, welcher Button voriengesetllt sein soll, damit der User nur noch die Enter-Taste drücken muß (Infos dazu findet Ihr in der Onlinhilfe).

Will man Button und Symbol bestimmen, genügt es beide Optionen zu addieren. Man kann als Option einfach den Zahlenwert (zweite Spalte in obiger Tabelle) eingeben oder man nutzt VB-Konstanten (erste Spalte in obiger Tabelle), die uns die Entwicklungsumgebung bei der Eingabe des Befehls angibt.

Wollen wir unserer MessageBox ein Fragezeichen und einen Ja/Nein-Button und den Text "Hallo!" im Titelbalken verpassen, müssen wir sie wie folgt umformen: Antwort = MsgBox("Wollen wir zählen üben?", vbQuestion + vbYesNo, "Hallo!")

Das Ergebnis würde dann in der Variablen "Antwort" gespeichert.

Auch für Rückgabewerte gibt es VB-Konstanten:
vbOK 1 OK
vbCancel 2 Abbrechen
vbRetry 4 Wiederholen
vbIgnore 5 Ignorieren
vbYes 6 Ja
vbNo 7 Nein

Um Ergebnisse auszuwerten, nutzt man sogenannte "If"-Konstruktionen:

     If Bedingung then
       'Befehle wenn Bedingung erfüllt
      else
       'Befehle falls Bedingung nicht erfüllt.
     End If
 

Anmerkung: Falls es sich nur um kurze Befehle handelt kann man auch alles in einer Zeile schreiben, die mehrzeilige Schreibweise ist jedoch meist übersichtlicher.

Wir können in der If-Abfrage die Antwort überprüfen oder auch dort gleich die MessageBox-Funktion aufrufen:

      If MsgBox("Wollen wir zählen üben?", vbQuestion + vbYesNo, "Hallo!") = vbNo Then
        MsgBox "Schade! Dann machen wir Schluß für heute...", vbExclamation
        End                'Programm wird beendet, wenn Anwender nicht zählen üben will
       Else
        'hier kommt der Aufruf unserer Zählübung
      End If
  

Hier wurden jetzt gleich beide Formen der MsgBox verwendet. Zunächst die Frage (innerhalb der Bedingung):

Wird die Frage mit "Nein" beantwortet (vbNo) dann wird eine weitere MessageBox aufgerufen

die dem Anwender das bevorstehende Ende mitteilt und das Programm beendet. Wird die Frage mit "Ja" beantwortet, d.h. die If-Bedingung ist nicht erfüllt, tritt die Alternative in Kraft, die wir in unserer nächsten Lektion schreiben...

Beispielprojekt laden

Alles klar?

zurück Index weiter


© Copyright 1998-2000 J.Behling EMail schreiben ABC-Ware's Homepage
Weitergabe und Druck (auch in Teilen, mit Ausnahme von Privatgebrauch) ohne ausdrückliche Genehmigung der Autorin untersagt.