Beispiel QuadratDialog ◦ Zusammenfassung ◦ ?

### Benutzeroberfläche

Wir veranschaulichen die Entwicklung einer graphischen Benutzerschnittstelle (GUI) am Beispiel der Arbeitsmappe QuadratProgrammiertDialog.xls. Das Programm startet nach einem Klick auf die Schaltfläche ‘Quadrat zeichnen’ und verlangt vom Benutzer die Werte für die Abszisse und Ordinate der linken oberen Quadratecke. Nach der Eingabe der Seitenlänge zeichnet es ein Quadrat an der eingegebenen Position.

Excel stellt vordefinierte Objektklassen bereit, nach deren Muster der Entwickler Objekte erstellen kann. Man bezeichnet Objektklassen deshalb auch als ”Objektfabriken”. Die Benutzeroberfläche enthält Objekte der Klassen Tabellenzellen, Schaltflächen und Eingabefelder:

- die Tabellenzellen Hilfe und Folien

- die Schaltfläche Quadrat zeichnen

- das Eingabefeld Abszisse.

Der Begriff Objekt lässt sich am Beispiel der Schaltfläche definieren:

- Ein Objekt trägt einen eindeutigen Namen, zum Beispiel Quadrat zeichen

- Objekteigenschaften sind zum Beispiel Position, Grösse und Schriftformat

- Das Verhalten eines Objekts wird durch Methoden, vor allem benutzerdefinierte Ereignisprozeduren, bestimmt. Zum Beispiel definiert die Ereignisprozedur Quadrat_nachKlick, wie das Programm auf das Ereignis “Linksklick“ reagiert.

### Projektexplorer

Der Projektexplorer von QuadratProgrammiertDialog.xls gibt einen Überblick über das Projekt QuadratDialog. Das Projekt verwendet Subroutine Quadrat der Arbeitsmappe QuadratProgrammiert.xls. Im Projektexplorer finden Sie einen entsprechenden Verweis:

Ein Verweis kann sicht nicht nur auf eine Arbeitsmappe, sondern auch auf Nicht-Excelcode beziehen. Externer Code kann zum Beispiel aus ausführbaren Dateien mit der Erweiterung .exe (Abkürzung für executable code), ActiveX-Steuerelementen (*.ocx) oder Programmbibliotheken (zum Beispiel *.dll) stammen.

Suchen Sie nach einigen .exe-, ocx.- und .dll-Dateien ((»Rechtsklick auf Start-Schaltfläche)).

### Ereignisprozeduren

Der folgende Bildschirmausschnitt zeigt, wie der Entwickler nach einem Klick auf den Menüpunkt »Formular der Entwicklungsumgebung (»Alt/F11) die Schaltfläche Quadrat zeichnen auf das Tabellenblatt gesetzt hat. Sobald der Entwickler mit dem Schaltenflächensymbol der Toolbox die Schaltfläche gezeichnet hat, verlangt Excel den Namen einer Ereignisprozedur:

Quadrat_Klick

sei der Name der Ereignisprozedur. Sie soll die bereits in QuadratProgrammiert.xls definierte Subroutine verwenden:

>     Quadrat(
>       Blattname As String,
>       X As Integer,
>       Y As Integer,
>       Seite As Integer)

Die vier Argumente

Blattname, X, Y und Seite werden in QuadratProgrammiertDialog.xls vom Benutzer definiert, und zwar in der Anweisung InputBox. Wer Argumentwerte nicht bereits zur Übersetzungszeit definiert, sondern erst zur Laufzeit vom Benutzer eingeben lässt, muss mit Eingabefehlern rechnen. Die Ereignisprozedur Quadrat_Klick der Schaltfläche Quadrat zeichnen soll deshalb die Eingabe zuerst prüfen. Das Ergebnis der Prüfung wird im Ausgabefeld MsgBox mitgeteilt. Das folgende Bild zeigt eine mögliche Fehlermeldung:

Wir definieren nun die Ereignisprozedur Quadrat_Click der Schaltfläche Quadrat zeichnen. Sie soll die folgenden Aufgaben erfüllen:

- Argumente für den Aufruf von Quadrat lesen
- Argumente prüfen
- Quadrat

aufrufen.

Ihr Code lautet deshalb:

>     Sub

Quadrat_Click() Dim X As String, Y As String, Länge As String ‘-- Eingaben lesen X = InputBox(Prompt:=“X: ”, Title:=“Abszisse”) 'benannte Argumente Y = InputBox(“Y: ”, “Ordinate”) 'Positionsargumente Länge = InputBox(“Seitenlänge: ”, “Quadrat”) ‘-- Eingaben prüfen If X = "" Or X = "0" Or Y = "" Or Y = "0" Or Länge = "" Or Länge = "0" Then MsgBox "Null- oder Leereingaben nicht erlaubt" Else Quadrat “Dialog”, CInt(X),CInt(Y),CInt(Länge) End If End Sub

Das Eingabefeld wird im Gegensatz zur Schaltfläche Quadrat zeichnen nicht vom Programmierer entworfen, sondern ist das Ergebnis der Anweisung InputBox. Die Entscheidungsanweisung prüft die eingelesenen Argumente auf leer ("") oder 0. Das Schlüsselwort Or ist ein boolscher Operator. Boolsche Operatoren wie

Or, And und Not verknüpfen Operanden so, dass die Verknüpfung den Wert True oder False des Datentyps Boolean ergibt. Gibt der Benutzer zum Beispiel für X den Wert 0 ein, so wird der Ausdruck X = "" Or X = "0" Or Y = "" Or Y = "0" Or Länge = "" Or Länge = "0" wahr und das Programm meldet ”Null- oder Leereingaben nicht erlaubt". Dem Benutzer bleibt dann nichts anderes übrig, als alle drei Argumente nochmals einzugeben.

Wie erreichen Sie, dass der Benutzer nach einem Fehler nur einen Wert neu eingeben muss?

Der Aufruf von Quadrat enthält drei Funktionsaufrufe des Formats Ganzzahl = CInt(<Zahlen- oder Textausdruck>). CInt (convert to integer) konvertiert einen nummerischen oder alphanummerischen Ausdruck in einen Wert des Datentyps Integer. Diese Funktion ist erforderlich, weil die Argumente von Quadrat (mit Ausnahme des ersten) ganzzahlig sind, der Rückgabewert der vordefinierten Funktion InputBox aber immer eine Zeichenkette sein muss.

Übung HexagonDialog
Verweise als eine Art der W iederverwendung von Code