Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Dirk Abels
I Inhaltsverzeichnis ............................................................................ 5
V Vorwort ........................................................................................... 13
V.1 Icons und typographische Vereinbarungen des Handbuches ............ 15
5
Das Ansicht-Menü .............................................................................. 38
Das Projekt-Menü ............................................................................... 40
Das Format-Menü ............................................................................... 42
Das Debuggen-Menü .......................................................................... 43
Das Ausführen-Menü .......................................................................... 45
Das Extras-Menü ................................................................................. 46
Das Add-In-Menü................................................................................ 46
4 Standardsteuerelemente ................................................................. 85
4.1 Das Formular Form ............................................................................. 85
Aufgabe ............................................................................................... 87
Lösung................................................................................................. 87
4.2 Das Textelement Label........................................................................ 88
Aufgabe ............................................................................................... 88
Lösung................................................................................................. 88
4.3 Die Schaltfläche Button ...................................................................... 89
Aufgabe ............................................................................................... 89
Lösung................................................................................................. 90
4.4 Das Texteingabeelement TextBox ...................................................... 92
Aufgabe ............................................................................................... 92
Lösung................................................................................................. 93
4.5 Das Bildfeldsteuerelement PictureBox................................................ 93
4.6 Das Anzeigesteuerelement Image ....................................................... 95
4.7 Das Rahmensteuerelement Frame ...................................................... 95
4.8 Das Kontrollkästchen CheckBox ........................................................ 96
Aufgabe ............................................................................................... 97
Lösung................................................................................................. 97
6
4.9 Das Optionsfeld OptionButton ........................................................... 98
Aufgabe................................................................................................ 99
Lösung ................................................................................................. 99
4.10 Das Listenfeld ListBox ....................................................................... 100
Einen neuen Datensatz eintragen ..................................................... 101
Einen Datensatz löschen ................................................................... 101
Den gesamten Inhalt des Listenfeld-Steuerelements löschen .......... 101
Aufgabe.............................................................................................. 101
Lösung ............................................................................................... 101
4.11 Das Kombinationsfeld Combobox.................................................... 102
Aufgabe.............................................................................................. 103
Lösung ............................................................................................... 103
4.12 Die Bildlaufleisten ScrollBar .............................................................. 104
Aufgabe.............................................................................................. 105
Lösung ............................................................................................... 105
4.13 Das Datei-, Verzeichnis- und Laufwerklistenfeld .............................. 105
Aufgabe.............................................................................................. 106
Lösung ............................................................................................... 106
4.14 Der Zeitgeber Timer........................................................................... 108
Aufgabe.............................................................................................. 109
Lösung ............................................................................................... 109
4.15 Das Liniensteuerelement Linie.......................................................... 111
4.16 Das Figurensteuerelement Shape ...................................................... 111
Beispiel zum Figurensteuerelement Shape ........................................ 111
4.17 Hinzufügen weiterer Steuerelemente ................................................ 115
4.18 Der Standarddialog mit dem CommonDialog.................................. 116
Die Eigenschaften des Dialogs Datei öffnen/speichern .................... 117
Die Eigenschaften des Dialogs Farbpalette........................................ 119
Die Eigenschaften des Dialogs Schriftart .......................................... 120
Die Eigenschaften des Dialogs Drucken............................................ 121
Die Eigenschaften des Dialogs Hilfe.................................................. 122
Zusammenfassung ............................................................................. 123
4.19 Das Registerblättersteuerelement SSTab............................................ 124
Aufgabe.............................................................................................. 125
Lösung ............................................................................................... 125
4.20 Das MDI-Formular............................................................................. 125
Aufgabe.............................................................................................. 126
Lösung ............................................................................................... 126
7
5.7 Die Eigenschaft MousePointer.......................................................... 133
5.8 Die Eigenschaft TabIndex ................................................................. 134
5.9 Die Eigenschaft TabStop ................................................................... 134
5.10 Die Eigenschaft Tag .......................................................................... 134
5.11 Die Eigenschaft Text ......................................................................... 134
5.12 Die Eigenschaft ToolTipText ............................................................ 135
5.13 Die Eigenschaft Visible ..................................................................... 135
5.14 Die Eigenschaft WindowState .......................................................... 135
8
11 Aufbau eines Visual Basic-Projekts .............................................. 177
11.1 Ablaufgesteuerte Programmierung.................................................... 177
11.2 Ereignisgesteuerte Programmierung ................................................. 178
9
13.3 Einführung in die Objektorientierung ............................................. 222
Was ist ein Objekt? ........................................................................... 223
Was sind Eigenschaften? .................................................................. 224
Was sind Ereignisse? ......................................................................... 224
Was sind Methoden? ........................................................................ 225
Was ist eine Klasse?........................................................................... 225
Erzeugen einer Klasse........................................................................ 226
Datenelemente.................................................................................. 227
13.4 Das Arbeiten mit zwei Formularen ................................................... 231
Laden und Anzeigen eines Formulars .............................................. 232
Beispiel zum Arbeiten mit zwei Formularen .................................... 235
Die Programmentwicklung............................................................... 240
13.5 Rekursive Programmierung .............................................................. 246
Einfache Rekursion ........................................................................... 246
Mehrfache Rekursion........................................................................ 248
13.6 Die Registrierdatenbank.................................................................... 250
Die Schlüssel der Registrierdatenbank.............................................. 251
Der Zugriff auf die Registrierdatenbank ........................................... 252
Das Arbeiten mit der Registrierdatenbank ....................................... 254
10
Installationsorte der Dateien............................................................. 293
Skriptdatei.......................................................................................... 294
Verpackungsbericht........................................................................... 294
A Anhang.......................................................................................... 351
A.1 Inhalt der Diskette............................................................................. 351
A.2 Standardbefehle................................................................................. 353
11
A.3 Glossar............................................................................................... 355
A.4 Von Visual Basic 5.0 verwendete Dateitypen................................... 357
A.5 Zeichentabellen................................................................................. 358
12
V Vorwort
Visual Basic existiert nun schon in der sechsten Generation und er-
freut sich einer immer größeren Beliebtheit. Der wesentliche Vorteil
dieser Programmiersprache liegt in der Möglichkeit, mit geringem
Aufwand eine einfache Applikation zu erstellen. In diesem Buch sol-
len einfache Programmbeispiele den Umgang mit Visual Basic 6.0 er-
klären und das Grundverständnis für das Programmieren unter Win-
dows vermitteln.
Visual Basic 6.0 hat sein Aussehen gegenüber der Version 5.0 nur ge-
ringfügig verändert. In den Versionen bis 4.0 waren alle Module in ei-
genen Fenstern untergebracht. Seit der Version 5.0 sind aber alle Mo-
dule in ein Visual Basic-Fenster integriert. Für Visual Basic-Umsteiger,
die von der Version 4.0 oder früher auf 6.0 umsteigen, ist dieses De-
sign zwar eine Umstellung, doch ist die Entwicklungsumgebung
dank der neuen Oberfläche nun auch deutlich übersichtlicher. Um
diese Übersichtlichkeit auch voll ausnutzen zu können, empfiehlt es
sich, mit einer Grafikauflösung von mindestens 1024x768 auf einem
17"-Bildschirm zu arbeiten.
Seit der Version 5.0 gibt es auch einen Compiler, der in der Version
6.0 noch weiter optimiert wurde, damit er schnelleren, vom Prozes-
sor ausführbaren Programmcode erzeugt. Bis zur Version 4.0 wurde
der Programmcode immer nur von einem Interpreter verarbeitet; seit
der Version 5.0 können richtige, ausführbare Programme (.EXE) er-
zeugt werden. Der Anwender merkt bei der Bedienung keinen direk-
ten Unterschied. Die Programme, die jedoch mit einem Compiler
übersetzt wurden, sind in der Ausführung merklich schneller. Dieser
Umstand erlaubt es auch, größere Programme unter Visual Basic 6.0
13
zu realisieren, was bis zur Version 4.0 aus Performancegründen nicht
möglich war.
Eine weitere Novität ist, daß unter Visual Basic auch teilweise objekt-
orientiert entwickelt werden kann. In diesem Buch werde ich darauf
jedoch nur oberflächlich eingehen, weil dies den Rahmen eindeutig
sprengen und den Einstieg deutlich erschweren würde. Über die ob-
jektorientierte Programmierung in Visual Basic ließe sich leicht ein
eigenes Buch schreiben. (Für den fortgeschrittenen Visual Basic-Pro-
grammierer empfehle ich hierzu das Buch „Visual Basic 6.0. Effektive
Programmentwicklung unter Windows 98“ von Michael Kofler, in
dem die objektorientierte Programmierung fundiert erklärt und an-
hand vieler Beispiele erläutert wird.)
Mit diesem Buch möchte ich dem Leser anhand einiger Beispiele die
Möglichkeit bieten, sich von Grund auf in die Programmierung mit
Visual Basic 6.0 einzuarbeiten. Es werden Grundbegriffe der Program-
mierung sowie grundlegende Programmstrukturen ausführlich erläu-
tert. Ebenso wird der Umgang mit der grafischen Oberfläche von Vi-
sual Basic demonstriert, um die bestmögliche Grundlage zum
Erstellen von Anwendungen zu bieten.
Das Schreiben dieses Buches hat mir viel Freude bereitet, da ich
meine eigenen Ideen und Vorstellungen darin einbringen konnte.
Dirk Abels
14
V.1 Icons und typographische
Vereinbarungen des Handbuches
In diesem Buch wird eine Reihe von Icons verwendet, deren Bedeu-
tung Sie hier finden:
Beispiele helfen Ihnen, sich schneller und sicher im Feld der Visual
Basic-Programmierung zu orientieren. Sie werden darum mit diesem
Icon gekennzeichnet.
Übung – so werden praktische Übungen gekennzeichnet, mit deren
Hilfe Sie Ihre neuerworbenen Kenntnisse trainieren können. Sie wer-
den dieses Icon in diesem Buch sehr oft finden!
Hinweis – damit möchten wir Sie auf Textpassagen hinweisen, die
Ihre besondere Aufmerksamkeit verdienen.
Warnung – hier zeigen wir Ihnen, wie Sie häufig gemachte Fehler
vermeiden und nicht in verborgene Fallen tappen.
Tips und Tricks – hier geben wir Ihnen einige Tips, wie Sie sich die
Arbeit erleichtern können.
15
1 Installation von
Visual Basic 6.0
Für die Installation von Visual Basic 6.0 legen Sie die CD-ROM mit
der Software von Microsoft in das CD-Laufwerk ein. Im Normalfall
wird das Installationsprogramm daraufhin automatisch gestartet. Be-
ginnt das System nicht automatisch mit der Installation, kann die In-
stallation manuell gestartet werden. Hierfür wählen sie aus der Start-
leiste das Menü START und darin die Option AUSFÜHREN.
17
Abbildung 1.2: Der Installationsbildschirm
Hier können Sie sich über die Schaltfläche INFO-DATEI ANZEIGEN wei-
tere Information, über die neue Entwicklungsumgebung im Internet-
Browser anzeigen lassen. Während der gesamten Installation werden
drei Schaltflächen im unteren Bereich des Fensters angezeigt:
18
Hier werden Sie aufgefordert, die ID-Nummer des Produktes, Ihren
Namen und evtl. den Ihrer Firma einzutragen. Die ID-Nummer fin-
den Sie auf der Rückseite der CD-Hülle, der Sie die Installationsdis-
kette entnommen haben. Mit Betätigen der Schaltfläche WEITER wird
wieder ein neues Fenster angezeigt.
Mit WEITER wird nun der Installationsschritt für die Art der Installa-
tion von Visual Basic aktiviert. Im allgemeinen kann die voreinge-
stellte Option VISUAL BASIC 6.0 ... INSTALLIEREN übernommen werden.
Standard
Visual Basic 6.0 wird mit den Einstellungen installiert, die für die mei-
sten Fälle ausreichend sind. Ich empfehle diese Installationsart, da
zum Erlernen einer Programmiersprache die Standardeinstellungen
völlig ausreichend sind. Wenn bei der Programmierung weitere Op-
tionen oder Programmteile benötigt werden, läßt sich die Installa-
tion jederzeit anpassen und erweitern.
Benutzerdefiniert
19
Ordner wechseln...
20
Um festzustellen, welche Komponenten einer Gruppe selektiert sind,
muß mit dem Markierungsbalken die gewünschte Option markiert
werden. Danach wird durch Betätigen der Schaltfläche OPTION ÄN-
DERN... das Fenster angezeigt, das die selektierten Module auflistet.
Mit der Schaltfläche ALLE AUSWÄHLEN werden alle Optionen mit den je-
weiligen Modulen markiert und dann auch installiert. Voreingestellt
sind die Module, die bei der Standardinstallation auf die Festplatte ko-
piert werden. Jetzt beginnt der eigentliche Installationsvorgang. Die
Zeit, die für das Kopieren und Konfigurieren der Entwicklungsumge-
bung gebraucht wird, hängt jetzt nur noch von der Computerhard-
ware und von den ausgewählten Modulen ab.
1.1 Systemvoraussetzungen
1.1.1 Hardware
Folgende Hardwarekonfiguration ist für die Installation von Visual
Basic 6.0 als minimales Basissystem erforderlich:
Prozessor
Ein PC mit einem 486DX/66 MHz oder einem schnelleren Pro-
zessor.
Hauptspeicher
Mindestens 16 MB unter Windows 95.
Mindestens 24 MB unter Windows NT.
Festplatte
76 MB für die typische Installation.
94 MB für die komplette Installation.
CD-ROM-Laufwerk
Monitor
Ein VGA-Monitor oder ein Monitor mit einer höheren Auflö-
sung.
Maus
Eine serielle oder entsprechend kompatible Maus.
Prozessor
PC mit Pentium-Prozessor.
1.1.2 Betriebssystem
Microsoft Windows 95 oder höher.
Microsoft Windows NT Workstation Version 4.0 (mit Service Pack 3).
22
2 Einführung in die
Entwicklungsumgebung
23
Abbildung 2.2: Die Visual Basic-Entwicklungsumgebung nach dem Start
2.3.2 Programmdokumentation
Wie in allen Programmiersprachen ist es auch in Visual Basic wichtig,
daß der zu entwickelnde Programmcode vernünftig dokumentiert
wird. Oft werden Programme gar nicht, falsch oder sinnlos dokumen-
tiert (Abbildung 2.3). Es ist offenkundig, daß die Variable Anzahl den
Bemerkungen können unter Visual Basic immer mit dem Zeichen „'“
oder dem Befehl REM eingeleitet werden. Alle nachfolgenden Zei-
chen haben keinen Einfluß mehr auf das Programm und werden so-
mit auch nicht mehr berücksichtigt. Nach diesen Kommentarzei-
chen kann in dieser Zeile kein Programmcode mehr folgen.
Visual Basic beruht auf der älteren Sprache Basic, die schon beim
C641 Verwendung gefunden hat. Auf dem PC unter DOS wurde
GW-Basic mitgeliefert. Diese Sprachen kannten keine Funktionen
oder Prozeduren, sondern bestanden aus einer Liste aneinanderge-
reihter Befehle (Abbildung 2.4), bei denen jede Zeile eine Nummer
hatte. Um nun eine bestimmte Befehlsfolge auszuführen, gab es den
direkten Sprungbefehl Goto.
5 Clr
10 For I=3 To 10
20 If I<5 Then Goto 42
30 Next I
40 I=20
41 Goto 45
42 Print I
43 Goto 30
45 Print I
Abbildung 2.4: Ein altes BASIC-Programmlisting
Mit dem Befehl Goto kann man direkt zu einer beliebigen Zeile im Pro-
gramm springen. Auch Visual Basic kennt diesen Befehl; jedoch gilt
es allgemein als unschöner Programmierstil, wenn dieser Befehl ver-
wendet wird (Ausnahme: Kapitel 7 ab Seite 147). Es läßt sich in Visual
Basic immer eine Programmierlösung finden, in welcher der Befehl
Goto vermieden werden kann.
Damit ein Programm auch dann verständlich bleibt, wenn man den
Programmcode seit einigen Wochen nicht mehr bearbeitet hat oder
sich ein anderer Anwender in dieses Programm einarbeiten muß,
sollte übersichtlich programmiert werden. Aus diesem Grund ist die
Verwendung von Funktionen zu vermeiden, die sehr viele Pro-
grammzeilen enthalten. Vielmehr ist es besser, eine sehr lange Funk-
tion oder Prozedur in mehrere Bestandteile zu unterteilen.
Wie in Tabelle 2.2 zu sehen ist, läßt sich die Funktion, in der der ge-
samte Programmcode in kleinere Funktionen ausgelagert wurde, wie
ein Programm in Pseudocode lesen. Der Code wirkt eher umgangs-
sprachlich.
Das Fenster Projekt enthält alle Dateien, die für die Erstellung der Pro-
gramme benötigt werden. In diesem Fenster werden drei Sorten von
Dateien dargestellt.
Das Fenster in Abbildung 2.9 stellt den Editor dar. Hier wird der Pro-
grammcode der einzelnen Formulare und Programmdateien (Bas-
Files) erstellt und bearbeitet. In der ListBox Object (linke obere List-
Box des Formularfensters) ist das aktive Formular oder das aktive
Steuerelement angegeben, in der ListBox Proc (rechte obere ListBox
des Formularfensters) dagegen die aktuelle Ereignisprozedur des Steu-
erelements, zu dem der Programmcode gehört.
Mit den Funktionstasten (F8) (RUN | STEP INTO) und (ª)+(F8) (RUN |
STEP OVER) läßt sich das Programm Schritt für Schritt abarbeiten, wo-
bei die Taste (F8) bei der Ausführung eines Funktionsaufrufs in die
Funktion verzweigt und dort weiterarbeitet, während die Taste
(ª)+(F8) die aufzurufende Funktion ausführt.
Sub Beispiel
Dim x As Integer
x = 2 * 123
Debug.Print x
End Sub
Das Formular ist das Fenster unter Windows. Auf ihm werden die
Steuerelemente untergebracht; ebenso wird auch der Programmcode,
der zu den Steuerelementen gehört, hier gespeichert.
Projekt hinzufügen/entfernen
Drucken/Druckereinrichtung (Strg)+(P)
<Projekt> erstellen
Projektgruppe anlegen
Beenden (Alt)+(Q)
(Strg)+(Z) Rückgängig/Wiederholen
Mit der Option RÜCKGÄNGIG können die Änderungen nach dem letz-
ten Speichern wieder rückgängig gemacht werden. Wurden zu viele
Schritte rückgängig gemacht, lassen sie sich mit WIEDERHOLEN wie-
derherstellen.
(Strg)+(X) Ausschneiden/Kopieren
(Entf) Löschen
(Strg)+(F) Suchen/Weitersuchen/Ersetzen
Mit diesem Befehl fügen Sie eine Datei in das aktuelle Projekt ein.
Mit den Tasten (½) und (¼) kann die Liste durchsucht werden.
Mit (¢) oder einem Doppelklick wird der Eintrag ausgewählt.
Mit diesem Befehl werden Ihnen alle Konstanten angezeigt, die für
die Eigenschaften gültig bzw. erlaubt sind, die links vom Gleichheits-
zeichen (=) stehen.
Mit den Tasten (½) und (¼) kann die Liste durchsucht werden.
Mit (¢) oder einem Doppelklick wird der Eintrag ausgewählt.
QuickInfo (Strg)+(I)
Diese Option zeigt die gesamte Syntax des aktuellen Elements an und
markiert den aktuellen Parameter durch Fettschrift.
Parameterinfo (Strg)+(ª)+(I)
Lesezeichen
Code
Diese Option zeigt das Codefenster für das aktuell ausgewählte Ob-
jekt an.
(ª)+(F7) Objekt
Dieser Befehl ist nur zur Entwurfszeit verfügbar. Wenn sich der Cur-
sor dann auf einem zulässigen Objekt befindet, wird das zugehörige
aktive Element angezeigt.
(ª)+(F2) Definition
Damit wechseln Sie an die Position im Code, an der die letzte Ände-
rung durchgeführt wurde.
(F2) Objektkatalog
(Strg)+(G) Direktfenster
Überwachungsfenster
Aufrufliste (Strg)+(L)
Projekt-Explorer (Strg)+(G)
Eigenschaftsfenster (F4)
Formular-Layout-Fenster
Werkzeugsammlung
Diese Option zeigt das Fenster mit allen zur Verfügung stehenden
Steuerelementen an.
Farbpalette
Hiermit gelangen Sie zur Farbpalette, mit der die Farben von Steuer-
elementen oder Formularen verändert werden können.
Symbolleisten
Damit können Sie alle in Visual Basic zur Verfügung stehenden Sym-
bolleisten aufrufen, die unter der Menüleiste eingeblendet werden
können.
Formular hinzufügen
Damit fügen Sie ein neues oder ein existierendes Formular dem aktu-
ellen Projekt hinzu.
MDI-Formular hinzufügen
Damit fügen Sie ein neues oder ein existierendes MDI-Formular dem
aktuellen Projekt hinzu.
Modul hinzufügen
Damit fügen Sie ein neues oder ein existierendes Visual Basic-Modul
dem aktuellen Projekt hinzu.
Klassenmodul hinzufügen
Damit fügen Sie ein neues oder ein existierendes Klassenmodul dem
aktuellen Projekt hinzu.
Damit fügen Sie ein neues oder ein existierendes Steuerelement dem
aktuellen Projekt hinzu.
Eigenschaftenseite hinzufügen
Benutzerdokument hinzufügen
AktiveX-Designer hinzufügen
Mit diesem Menü wird dem aktuellen Projekt eine Datei zugeordnet.
Da eine Datei mehreren Objekten zugeordnet werden kann, wirken
sich die Änderungen, die an dieser Datei durchgeführt werden, auf
alle Projekte aus.
Diese Option entfernt ein Element aus dem aktuellen Projekt. Han-
delt es sich bei dem Element um eine Datei, wird diese nur aus dem
Projekt entfernt, nicht jedoch vom Datenträger.
Beim Entfernen von Elementen muß unbedingt darauf geachtet wer-
den, daß kein verbleibendes Element mehr das zu entfernende Ele-
ment benötigt. Visual Basic prüft diese Abhängigkeit nicht.
(Strg)(T) Komponenten
Ausrichten
Mit diesem Befehl richten Sie die markierten Objekte aneinander aus
(linksbündig, rechtsbündig, zentriert usw.).
Größe angleichen
Anhand der Maße, die das zuletzt ausgewählte Objekt besaß, werden
für alle ausgewählten Objekte dieselben vorgegebenen Objektmaße
eingestellt. Das Ursprungsobjekt wird mit einem farbigen Ziehpunkt
markiert.
Mit Hilfe dieses Befehls können Sie die Objektgröße des Objekts an
den Rasterlinien ausrichten.
Reihenfolge
Steuerelemente sperren
Einzelschritt (F8)
Mit diesem Befehl führen Sie die aktuelle Programmzeile aus. Enthält
die aktuelle Anweisung eine oder mehrere Prozeduren, wird in die
nächste auszuführende Prozedur verzweigt. Die Anweisung gilt als
ausgeführt, wenn alle enthaltenen Prozeduren abgearbeitet sind. Be-
findet sich das Programm im Design- und nicht im Haltemodus, wird
das Programm gestartet.
Prozedurschritt (ª)+(F8)
Überwachung hinzufügen
Dieser Befehl zur Anzeige des aktuellen Werts eines Ausdrucks ist aus-
schließlich im Haltemodus verfügbar.
Dieser Befehl löscht alle Haltepunkte, die mit dem Menübefehl HAL-
TEPUNKTE EIN/AUS im aktuellen Projekt eingefügt wurden.
Starten (F5)
Dieser Befehl dient der Ausführung des aktuellen Projekts in der Ent-
wicklungsumgebung.
Unterbrechen (Strg)(Untbr)
Mit diesem Befehl halten Sie die Ausführung des Programms an der
aktuellen Stelle an und wechseln in den Haltemodus. Wurde gerade
eine bestimmte Programmzeile abgearbeitet, wird diese automatisch
als die nächste auszuführende Anweisung markiert.
Beenden
Das aktuelle Programm wird hiermit beendet, und es wird in den De-
signmodus gewechselt.
Diesen Befehl verwenden Sie, um alle Ausdrücke des Projekts auf ihre
Initialwerte zurückzusetzen und das Visual Basic-Projekt erneut zu
starten.
Prozedur hinzufügen
Auf diese Weise wird in das aktuelle Modul eine neue Prozedur einge-
fügt.
Prozedurattribute
(Strg)(E) Menü-Editor
Dieser Befehl wird verwendet, um den Editor zur Erstellung eines Me-
nüs im aktuellen Formular zu öffnen.
Optionen
Editor
Editorformat
Allgemein
Verankern
Umgebung
Weitere Optionen
Daten-Manager
Bericht-Designer
Add-In-Manager
Dieser Menübefehl dient zum Laden und Entfernen von Add-Ins, die
die Visual Basic-Entwicklungsumgebung erweitern.
47
Dennoch ist das Programm in diesem Stadium bereits leistungsfähig.
Das Fenster kann vergrößert oder verkleinert, auf der Oberfläche ver-
schoben und sogar beendet werden; es entspricht dem Windows-
Standard. Die genannten Befehle können durch Anklicken des Sym-
bols in der linken oberen Ecke ausgeführt werden. Wenn man das
Programm jedoch über einen Button beenden will, muß dieser Befehl
(end) explizit programmiert werden.
3.2.1 Kurzüberblick
Dieses Kapitel erläutert die verschiedenen Variablentypen und Kon-
stanten. Es wird gezeigt, welche Wertebereiche Variablen einnehmen,
und erklärt, wie man für eine bestimmte Aufgabe die richtige Variable
findet. Weiterhin wird der Einsatzbereich der Konstanten erklärt.
3.2.2 Variablen
Variablen sind über einen Namen gekennzeichnete und ansprech-
bare Größen. Sie bestehen aus zwei Elementen, dem Variablennamen
und dem Eigenwert der Variablen. Der Name der Variablen kann
während der Programmlaufzeit nicht verändert werden, der Eigen-
wert dagegen sehr wohl. Variablen werden benötigt, um z.B. Ergeb-
nisse von Berechnungen oder Eingaben von Benutzern zu speichern
und zu verarbeiten. In Visual Basic ist es nicht zwingend erforderlich,
daß eine Variable deklariert1 wird. Es wird jedoch empfohlen, im
Menü EXTRAS OPTIONEN... auf dem Tabulator EDITOR die Option VA-
RIABLENDEKLARATION ERFORDERLICH zu aktivieren, damit grundsätzlich
alle Variablen deklariert werden müssen. Ansonsten können Pro-
grammfehler entstehen, deren Ursachen nur sehr schwer zu finden
sind (Tabelle 3.1).
Das folgende Beispiel soll die Summe aller Zahlen von 1 bis 100 ad-
dieren und das Ergebnis an die aufrufende Funktion zurückliefern.
Die Unterschiede des Programmcodes (Erg und Erk) in den Spalten
„richtig“ und „falsch“ sind grau hinterlegt.
48
richtig falsch
Programm function Summe(Zahl as integer) as function Summe(Zahl as integer) as
integer integer
Das Programm wird, wenn nicht explizit eine Deklaration der Varia-
blen gefordert ist, keine Fehlermeldung ausgeben. Der Unterschied
besteht nur darin, daß bei der Version „Falsch“ mit einem falschen
Ergebnis weitergerechnet wird. In diesem kleinen Beispiel ist der Feh-
ler relativ einfach zu lokalisieren. In sehr umfangreichen Program-
men dagegen ist die Suche sehr zeitaufwendig. Unter Umständen
sucht man den Fehler sogar an der falschen Stelle.
Variablentypen
49
Typ Wertebereich Beschreibung
Long –2`147`483`648 bis Die beiden Variablentypen unterscheiden sich darin, daß
2`147`483`647 der Wertebereich von Long deutlich größer als der von
4 Byte Integer ist. Eine Variable vom Typ Long nimmt im Vergleich
zu einer vom Typ Integer auch doppelt soviel Speicherplatz
ein.
Single Im negativen Bereich: Single und Double sind Fließkommazahlen, die sich darin
3`3,402823*1038 bis – unterscheiden, daß Double einen weitaus größeren
Wertebereich hat als Single, allerdings doppelt soviel
1.401298*10–45
Speicher benötigt wie eine Variable vom Typ Single. Diese
Im positiven Bereich: Variablentypen werden bei Berechnungen eingesetzt, die
1,401298*10–45 bis sehr genau sein müssen.
3,402823*1038
4 Byte
Double Im negativen Bereich:
–1.79769313486232*10308
bis
–4.94065645841247*10–324
Im positiven Bereich:
4.94065645841247*10–324
bis
1.79769313486232*10308
8 Byte
Currency –922`337`203`685`477.5808 Currency ist eine Mischung aus einer Ganz- und einer
bis Fließkommazahl. Damit lassen sich Berechnungen bis zur
922`337`203`685`477.5807 vierten Stelle nach dem Komma durchführen.
8 Byte
Date Datum Wird benutzt für Datums- und Uhrzeitangaben, wobei die
1. Januar 100 bis im Wertebereich angegebenen Begrenzungen gelten.
31. Dezember 9999
Uhrzeit
00:00 bis 23:59:59
8 Byte
String 10 Byte + 2 Byte pro Zeichen Zeichenketten bestehen aus der Aneinanderreihung
einzelner Zeichen aus dem ASCII-Zeichensatz (siehe ASCII-
Tabellen im Anhang). Seit der Visual Basic-Version 4.0 ist die
Länge einer Zeichenkette nur noch durch den
Hauptspeicher begrenzt (2.147.483.647 Zeichen).
Object 4 Byte Die Variable speichert einen Verweis auf ein Objekt. Es kann
sich hierbei um einen Button oder ein Formular handeln. Sie
wird eingesetzt, um Zugriffe auf Objekte übersichtlicher zu
gestalten.
Variant Bei Numerischen Werten: Variant ist ein Default-Variablentyp, der jeden beliebigen Typ
16 Byte aus der obigen Tabelle annehmen kann. Variablen werden
Bei Zeichenketten: automatisch konvertiert. Dieser Variablentyp wird dort
22 Byte + 2 Byte pro Zeichen eingesetzt, wo sich der Typ einer Variable bei der
Programmausführung ändern kann.
50
Im folgenden sollen einige Beispiele zur Deklaration von Variablen
gezeigt werden.
Code Beschreibung
Dim i As Integer Deklariert i als Ganzzahl
Dim Zeichenkette As String Deklariert Zeichenkette als Zeichenkette
Dim abcdefg Kein Variablentyp angegeben, also wird der
allgemeine Variablentyp Variant verwendet
Zeichen Variablentyp
% Integer
& Long
! Single
# Double
@ Currency
$ String
Wenn man bei der Deklaration der Variablen die in Tabelle 3.6 vorge-
stellten Zeichen für die Bestimmung des Variablentyps verwendet, ist
der Programmcode für den Programmierer, der sich zunächst in den
Programmfluß hineindenken muß, sehr viel einfacher zu verstehen,
da er den Variablentyp bereits an der Namensgebung der Variablen
erkennt.
Code Beschreibung
Dim i% Deklariert i als Ganzzahl
Dim Zeichenkette$ Deklariert Zeichenkette als Zeichenkette
Dim Wert% As Integer Keine gültige Deklaration der Variablen, da sonst
Dim Wert& As Integer die Variablen doppelt deklariert wären.
51
Der allgemeine Variablentyp Variant
Sub Beispiel_1()
Dim Satz$
Dim Zahl%
Dim Komma!
Zahl% = Quadrat(Zahl%)
Debug.Print "Zahl = " & Zahl%
Komma! = Quadrat(Komma!)
Debug.Print "Komma = " & Komma!
Satz$ = Quadrat(Satz$)
Debug.Print "Satz = " & Satz$
End Sub
52
Das folgende Beispielprogramm liefert das gleiche Ergebnis wie das
vorherige Beispiel, jedoch arbeitet die Funktion mit dem Variablen-
typ Long.
Function Quadrat_2(Satz As Long) As Long
Quadrat_2 = Satz * Satz
End Function
Sub Beispiel_2()
Dim Satz$
Dim Zahl%
Dim Komma!
Zahl% = Quadrat_2(Zahl%)
Debug.Print "Zahl = " & Zahl%
Komma! = CSng(Quadrat_2(CLng(Komma!)))
Debug.Print "Komma = " & Komma!
Satz$ = CStr(Quadrat_2(CLng(Satz$)))
Debug.Print "Satz = " & Satz$
End Sub
Beim Vergleich der beiden Programme fällt zum einen auf, daß das
Programm mit dem Variablentyp Variant weniger komplex ist als das
mit dem Variablentyp Long. Des weiteren ist die Berechnung des Qua-
drats einer Kommazahl im zweiten Beispiel falsch, denn bei der Über-
gabe der Variablen an die Funktion Quadrat wird der Nachkommateil
einfach abgeschnitten.
3.2.3 Konstanten
Konstanten bestehen wie die Variablen aus zwei Einheiten, dem Kon-
stantennamen und dem Eigenwert. Im Gegensatz zu den Variablen
kann weder der Eigenname noch der Wert der Konstanten während
der Laufzeit verändert werden. Dies ist auch der Zweck ihrer Verwen-
53
dung: Wenn im Programm Variablen eingesetzt werden, deren Werte
nicht verändert werden, und die Werte auch schon zur Zeit der Pro-
grammierung bekannt sind, handelt es sich bei diesen Werten um
Konstanten. Eine Konstante kann von jedem beliebigen Variablentyp
sein, denn jede Variable kann als Konstante definiert werden, indem
vor den Ausdruck der Variablendeklaration der Befehl const gestellt
wird.
Es ist sogar folgender Ausdruck möglich, wobei Pi (p) dann nur der
Wert 3 zugewiesen wird.
Eine typische Konstante für ein Programm ist z.B. die Versionsnum-
mer. Sie darf während der Programmlaufzeit nicht verändert werden,
muß aber immer wieder vom Programmierer angepaßt werden.
54
3.2.4 Mehrdimensionale Felder
Felder sind Listen von Variablen. Betrachtet man ein Zeichen als ei-
nen Datentyp, so ist die Zeichenkette vom Typ String ein Feld von Zei-
chen. Demnach wäre eine Variable Satz, die als
Statische Felder
Wenn die Größe eines Feldes konstant bleibt, spricht man von stati-
schen Feldern. Der Inhalt der einzelnen Feldvariablen kann jederzeit
geändert werden, aber die Anzahl der Felder, die zu der Variablen ge-
hören, ist konstant. Im folgenden wird eine Variable Woche dekla-
riert, die alle Wochentage enthält.
Dim Woche(7)
Woche = Array("Sonntag", "Montag", "Dienstag", _
"Mittwoch", "Donnerstag", "Freitag", _
"Samstag")
Die Variable Woche ist nun ein Feld und enthält sieben Werte vom
Typ String. Alle Werte sind bei der Deklaration initialisiert worden.
Ausgelesen wird jeder Wert über seine Position in dem Feld.
55
Wenn zur Programmierzeit der Inhalt der Variablen noch nicht be-
kannt ist, sieht die Deklaration eines Feldes wie folgt aus:
Der Inhalt aller Felder kann jederzeit über den Zugriff des Index geän-
dert werden.
Woche(2) = "Monday"
Mehrdimensionale Felder
Abbildung 3.5 zeigt, daß nun zwei Werte nötig sind, um ein Feld ein-
deutig zu identifizieren: zum einen der Index der horizontalen, der
x-Achse, und zum anderen der Index der vertikalen, der y-Achse. Die
Deklaration einer zweidimensionalen Feldvariablen sieht wie folgt
aus:
Der Zugriff auf das dritte Feld horizontal und das zweite Feld vertikal
erfolgt über den Befehl:
Feld(4, 5)
56
Die nächste Steigerung ist nun das dreidimensionale Feld. Es ist die
letzte Stufe, die sich noch recht übersichtlich darstellen läßt (Abbil-
dung 3.6).
Auch hier erhöht sich nun wieder die Komplexität der Parameter, um
auf eine bestimmte Zelle zugreifen zu können. Die Komplexität der
Felder läßt sich noch weiter steigern, jedoch wird es mit jeder neuen
Komplexitätsgröße schwieriger, sich diese Datenstruktur vorzustel-
len.
Dim i, j As Integer
Dim Feld(5, 3) As Integer
for i= 0 to 4
for j = 0 to 2
Feld(i, j) = i * j
next j
next i
57
Abbildung 3.7: Zweidimensionales Feld mit berechneten Feldwerten
Benutzerdefinierter Indexbereich
Dynamische Felder
Bisher sind wir immer davon ausgegangen, daß die Feldgröße, also
die Anzahl der Elemente, die eine Feldvariable enthalten soll, be-
kannt ist. Es gibt aber auch Aufgaben, bei denen die Feldgröße nicht
bekannt ist. Ein Beispiel hierfür ist das Rechnen mit Vektoren und
Matrizen. Die Deklaration der dynamischen Feldvariablen erfolgt wie
die Deklaration der statischen Feldvariablen mit dem Befehl Dim und
optional mit dem Variablentyp. Im Unterschied zur statischen Feld-
deklaration wird keine Größe des Feldes angegeben.
58
Die Definition der Größe des Feldes erfolgt erst im Programm, wenn
die Feldvariable gebraucht wird. Diese neue Dimensionierung der Va-
riablen erfolgt über den Befehl ReDim. Er wird wie der Befehl Dim zur
Felddeklaration verwendet, jedoch immer ohne Variablentyp.
ReDim Vektor(10)
ReDim Matrix(4, 3)
ReDim Hyper(2, 2, 2, 2, 2, 2, 2, 2)
ReDim Hyper(2, 2, 2, 2, 2, 2, 2, 2) As Integer 'Ist nicht möglich
Die Feldvariable Vektor ist ein eindimensionales Feld mit zehn Ele-
menten vom Typ Double. Matrix ist schon ein zweidimensionales Feld
vom Typ Double, enthält also
4 x 3 = 12
Variablen vom Typ Double. Die Variable Hyper ist eine achtdimensio-
nale Feldvariable vom Typ Variant und enthält
2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 256
Nach der ReDim-Anweisung können die Größe eines Feldes und die Di-
mensionierung jederzeit geändert werden. Wenn sich die Größe des
Feldes während der Programmlaufzeit verändern muß, ist auch dieses
mit der ReDim-Anweisung zu lösen (zum Ablauf sei auf die oben be-
schriebenen Beispiele verwiesen).
59
ein mehrdimensionales Feld:
Erase Feld
Tabelle 3.6: Inhalt der Feldvariablen nach dem Löschen mit Erase
60
Ermitteln des Indexbereiches eines Feldes
Min = LBound(Feld)
Max = UBound(Feld)
Min = LBound(Feld, 2)
Max = UBound(Feld, 2)
Es gibt leider noch keinen Befehl, mit dem sich ermitteln läßt, wie
viele Dimensionen ein Feld hat.
Dim Feld(2)
61
Das in das Debugfenster geschriebene Ergebnis sieht folgendermaßen
aus:
62
Im folgenden wird der Datentyp Koordinate für ein zweidimensiona-
les Koordinatensystem definiert.
Type Koordinate
x As Integer
y As Integer
End Type
Punkt.x = 2
Punkt.y = 3
3.2.6 Schleifen
For-Schleife
Ergebnis = 0
For i=0 To 100
Ergebnis = Ergebnis + i
Next i
63
Um die Summe aller ganzen geraden Zahlen zu berechnen, muß die
im obigen Beispiel verwendete Schleife um den Parameter Schritt-
weite erweitert werden, da von Null ab nur jede zweite Zahl gerade ist.
Man erhält folgenden Programmcode:
Ergebnis = 0
For i=0 To 100 Step 2
Ergebnis = Ergebnis + i
Next i
Mit Exit For kann eine Schleife vorzeitig abgebrochen werden. Die
entsprechende Syntax lautet:
While-Schleife
Die While-Schleife ist eine Boolsche Schleife, d.h. solange der Aus-
druck wahr ist, wird sie auch durchlaufen. Dies birgt die Gefahr, daß
diese Schleife nicht endet, wenn der Boolsche Ausdruck niemals
„Falsch“ werden kann. Im Gegensatz zur For-Schleife wird die Anzahl
der Schleifendurchläufe nicht automatisch mitgezählt. Das folgende
Beispiel rechnet eine ganze Zahl in ein Bitmuster um, indem der Rest
der Division in eine Zeichenkette gespeichert wird.
Zahl = 7
Ergebnis = "0"
While Zahl<1
Ergebnis = (Zahl Mod 2) & Ergebnis
Zahl = Zahl / 2
Wend
Syntax:
While Bedingung
...
Wend
Do-Schleife
64
Schleife eine Überprüfung auf weitere Durchläufe erfolgt. Die ein-
fachste Form der Do-Schleife ist eine Endlosschleife.
Do
Loop
Do [While/Until Bedingung]
...
Exit DoSchleife vorzeitig verlassen
...
Loop
oder:
Do
...
Exit Do Schleife vorzeitig verlassen
...
Loop [While/Until Bedingung]
3.2.7 Verzweigungen
Verzweigungen werden gebraucht, um im Programm verschiedene
Fälle zu unterscheiden. Bei Wahr/Falsch- oder Ja/Nein-Entscheidun-
gen wird im allgemeinen die If-Then-Else-Verzweigung gewählt. Bei
mehreren Auswahlmöglichkeiten greift man auf den Typus der
Select Case-Entscheidung zurück.
IF-THEN-ELSE
65
Diese Art von Entscheidungsmöglichkeit wird benötigt, um Fälle zu
unterscheiden, die nur zwei Zustände kennen (Tabelle 3.8). Soll z.B.
eine Zahl durch eine Variable dividiert werden, so muß zuvor geprüft
werden, ob die Variable nicht 0 ist, da bei einer Division nicht durch
0 dividiert werden darf.
SELECT CASE
Diese Art von Verzweigung wird u.a. verwendet, wenn das Programm
abhängig vom Wochentag unterschiedliche Programmteile ausfüh-
ren muß.
Das folgende Beispiel schreibt in eine Variable vom Typ String den
Namen des Wochentages, wobei die Woche bei Sonntag beginnt, und
Sonntag dem Wert 1 entspricht.
66
Tag = 1
Select Case Tag
Case 1:
Wochentag = "Sonntag"
Case 2:
Wochentag = "Montag"
Case 3:
Wochentag = "Dienstag"
Case 4:
Wochentag = "Mittwoch"
Case 5:
Wochentag = "Donnerstag"
Case 6:
Wochentag = "Freitag"
Case 7:
Wochentag = "Samstag"
Case ELSE
Wochentag = "Falsche Eingabe"
End Select
Als Beispiel wählen wir eine Prozedur, die die Summe zweier Zahlen
ermittelt:
67
Funktionen (Function – End Function)
Auch hier wieder ein kurzes Beispiel, nämlich eine Funktion, die die
Summe zweier Zahlen ermittelt:
End Function
Call-by-Value
Soll bei einer Funktion oder Prozedur eine Variable durch die Me-
thode Call-by-Value übergeben werden, muß dies explizit bei der De-
klaration der Funktion angegeben werden.
Das folgende Beispiel berechnet die Fakultät einer Zahl. Damit der
Variableninhalt in der aufrufenden Funktion nicht verändert wird,
wird das Verfahren Call-by-Value gewählt.
68
Fakultaet = x
Else
Fakultaet = 0
End If
End Function
Call-by-Reference
Das folgende Beispiel berechnet die Fakultät einer Zahl (vgl. mit Call-
by-Value). Diesmal wird die Parameterübergabe jedoch nach dem
Prinzip Call-by-Reference programmiert.
69
Call-by-Value Call-by-Reference
Schritt 1: Initialisierung Zahl = 4 Zahl = 4
Schritt 2: Aufruf der Fakultäts- Erg = Fakultaet(Zahl) Erg = Fakultaet(Zahl)
funktion
Variableninhalte nach dem Erg = 24 Erg = 24
Zurückkehren aus der Fakultäts- Zahl = 4 Zahl = 24
funktion
Wird der Inhalt der Variablen in der aufgerufenen Funktion nicht ge-
ändert, so ist es nicht relevant, ob die Parameterübergabe mit der Me-
thode Call-by-Value oder Call-by-Reference erfolgt.
Aufgabe
Das erste Programmbeispiel, das im folgenden entwickelt werden soll,
ist eine mathematische Spielerei. Alle natürlichen Zahlen2 lassen sich
in die Zahl 123 umrechnen, indem man sowohl die geraden und unge-
raden Ziffern als auch die Anzahl der Stellen ermittelt. Wird dieser Al-
gorithmus oft genug ausgeführt, so lautet das Endergebnis immer 123.
Theoretisches Beispiel mit den Zahlen 3 und 12345
gerade ungerade Anzahl
Zahl Ziffern Ziffern Stellen
Beispiel 1 3 0 1 1
11 0 2 2
22 2 0 2
202 3 0 3
303 1 2 3
123 1 2 3
123 1 2 3
Beispiel 2 12345 2 3 5
235 1 2 3
123 1 2 3
123 1 2 3
2. Zahlen, die größer als 0 sind und keine Nachkommastellen haben, also nicht
gebrochen sind.
70
3.3 Das erste Programm
Auf dem leeren Formularfenster werden die Steuerelemente, über die
Programm und Benutzer kommunizieren, untergebracht. Hier wer-
den die Buttons, Labelfelder usw. positioniert und der Code für das
Formular implementiert. Jedes Formularfenster kann wiederum ein
anderes Formularfenster aufrufen. Im Eigenschaftsfenster kann nun
der Name des Fensters geänder werden. Hiefür ändern Sie die Eigen-
schaft Name in Zahlenloch.
Wenn man mit der linken Maustaste auf dem Formular einen Dop- Entwickeln einer ersten
pelklick ausführt, gelangt man in den Programmeditor von Visual Ba- Applikation mit Visual
sic. Jede Funktion oder Prozedur kann nun wiederum eine andere Basic 6.0
Funktion oder Prozedur aufrufen.
71
Abbildung 3.11: Programmeditor nach dem Doppelklick auf das Formularfenster
3.3.1 Eingabe
Die Dateneingabe in Für das Beispiel wird eine Eingabemöglichkeit benötigt, um die zu be-
das Programm rechnende Zahl frei wählen zu können. Zur Eingabe von Daten über
Zahlenloch die Tastatur steht unter Visual Basic das Texteingabeelement TextBox
zur Verfügung.
72
Zahl, bei der Eigenschaft Tag wird die Zeichenkette „Die zu prüfende
Zahl eingeben“ eingegeben. Der Inhalt in der Eigenschaft Text wird
gelöscht. Bei einem Programmstart kann nun in der TextBox eine
Eingabe vorgenommen werden.
3.3.2 Ausgabe
Natürlich wird auch ein Steuerelement benötigt, mit dessen Hilfe die Ausgabe des
ermittelten Daten dem Benutzer dargestellt werden. Es gibt dazu Programmergebnisses
mehrere Möglichkeiten, von denen man die jeweils beste wählen
kann. Anhand des Beispiels zur Berechnung der Zahl 123 sollen drei
Ausgabemöglichkeiten verglichen werden, um das Vorgehen zur Ent-
scheidung zwischen verschiedenen Steuerelementen zu verdeutli-
chen.
Wie Tabelle 3.11 zeigt, ist es nicht eindeutig, wie viele Schritte not-
wendig sind, um das Ziel zu erreichen. Es ist aber dennoch sinnvoll,
alle Zwischenergebnisse dem Benutzer auszugeben, damit er die Be-
rechnung nachvollziehen kann. Aus der Vergleichstabelle (Tabelle
3.11) ist ersichtlich, daß nur die ListBox mehrere Datenzeilen ausge-
ben kann. Daher wird in diesem Beispiel die ListBox eingesetzt.
73
3.3.3 Buttons (Programmsteuerungen)
Ausführen von Um in einem Programm einen bestimmten Programmteil zu starten,
Programmodulen werden CommandButtons, kurz Buttons oder Schaltflächen genannt,
eingesetzt. Im Beispiel zur Berechnung der Zahl 123 werden zwei
Schaltflächen benötigt – eine zum Starten der Berechnung, eine zum
Beenden des Programms.
Die Eigenschaft Name des Buttons erhält den Wert OK, die Eigen-
schaft Caption den Wert Berechnen. Auf die gleiche Weise muß der
Button zum Beenden des Programms auf das Formular aufgebracht
werden. Die Eigenschaft Name erhält nun den Wert Abbruch, und die
Eigenschaft Caption erhält den Wert Beenden.
Es muß jedoch darauf geachtet werden, daß jeder ShortKey nur ein-
mal benutzt wird, da sonst nicht eindeutig definiert werden kann,
welche Funktion als erste ausgeführt wird. Um auch dieses Beispiel-
programm an den Windows-Standard anzupassen, erhält der Button
OK bei der Eigenschaft Caption die Zeichenkette Be&rechnen und der
74
Button ABBRECHEN – ebenfalls bei der Eigenschaft Caption – die Zei-
chenkette &Beenden.
Wenn das Programm neu gestartet wird, können beide Buttons betä-
tigt werden. Dennoch geschieht nichts. Weder wird eine Fehlermel-
dung ausgegeben, noch wird durch Betätigen des Buttons Beenden das
Programm abgebrochen. Um das Programm zu beenden, muß immer
noch das Tastenkürzel (Alt)+(F4) oder das Visual Basic-Menü AUSFÜH-
REN | BEENDEN benutzt werden.
75
Der folgende Programmcode führt die Zeile Initialisiere alle Varia-
blen aus dem Pseudocode-Listing aus.
Die While-Schleife
Ausführen einer Nachdem alle Variablen initialisiert wurden, muß die While-Schleife
Schleife bis zur realisiert werden. Als Kriterium für die einzusetzende Schleife gilt fol-
Erfüllung des gendes:
Abbruchkriteriums
1. Es muß zu Beginn der Schleife geprüft werden, ob die Zahl 123
schon gefunden wurde, denn wenn 123 als zu modifizierende Zahl
eingegeben wird, ist es nicht nötig, den Algorithmus abzuarbeiten.
2. Es ist nicht bekannt, wie oft die Schleife durchlaufen wird. In Ta-
belle 3.12 ist gut zu erkennen, daß die Größe der Zahl nicht in Zu-
sammenhang mit der Anzahl der Schleifendurchläufe steht, die
für das Erreichen der Zahl 123 nötig sind.
Der Bereich der While-Schleife des Pseudocodes stellt sich in Visual Ba-
sic wie folgt dar:
76
Zählen der geraden und ungeraden Zahlen
Um Ziffern in einer Zahl zu analysieren, ist es sinnvoll, die Zahl in Analysieren aller
eine Zeichenkette umzuwandeln und jedes Zeichen (bzw. jede Ziffer) Ziffern der einge-
auf das Kriterium „gerade“ bzw. „ungerade“ zu überprüfen. Für die gebenen Zahl
Umwandlung eines Variablentypen in einen anderen existieren fol-
gende Funktionen:
Funktion Beschreibung
Asc(s) Liefert den ASCII-Code des ersten Zeichens von s.
CBool(x) Wandelt einen beliebigen Datentyp x in den Datentyp Boolean um.
CByte(x) Wandelt einen beliebigen Datentyp x in den Datentyp Byte um.
CCur(x) Wandelt einen beliebigen Datentyp x in den Datentyp Currency um.
CDate(x) Wandelt einen beliebigen Datentyp x in den Datentyp Date um.
CDbl(x) Wandelt einen beliebigen Datentyp x in den Datentyp Double um.
Chr(n) Liefert das n-te Zeichen des ASCII-Zeichensatzes.
CInt(x) Wandelt einen beliebigen Datentyp x in den Datentyp Integer um.
CLng(x) Wandelt einen beliebigen Datentyp x in den Datentyp Long um.
CSng(x) Wandelt einen beliebigen Datentyp x in den Datentyp Single um.
CStr(x) Wandelt einen beliebigen Datentyp x in den Datentyp String um.
CVar(x) Wandelt einen beliebigen Datentyp x in den Datentyp Variant um.
Format(n, "xxx") Wandelt n in eine Zeichenkette unter Berücksichtigung des Formats xxx um.
Str(n) Wandelt n in eine Zeichenkette um.
Val(s) Liefert den Wert der numerischen Zeichenkette s.
Um nun die gesamte Zahl Ziffer für Ziffer zu analysieren, muß jede
Stelle mit einer Schleife geprüft werden. Hier bietet sich nun eine For-
Schleife an, da die Anzahl der Schleifendurchläufe bekannt ist. Die
Menge der Durchläufe muß mit der Menge der Ziffern, die die Zahl
hat, identisch sein. Im Programm ist die Zahl aber als Zeichenkette
bekannt, wobei die Anzahl der Zeichen mit der Anzahl der Ziffern der
Ausgangszahl identisch ist.
77
Um nun die Anzahl der Zeichen einer Zeichenkette zu ermitteln,
kann die Funktion Len(s) eingesetzt werden, die die Anzahl der Zei-
chen der Zeichenkette s zurückliefert.
Befehl Ergebnis
Mid$("Dies ist eine Zeichenkette", 2, 9) ies ist e
Mid$("Dies ist eine Zeichenkette", 23, 8) ette
Mid$("Dies ist eine Zeichenkette", 3, 0)
8
--- = 4 Rest 0 8 Modulo 2 = 0
2
78
Ermitteln des Ergebnisses und Berechnen der neuen Zahl
An dieser Stelle des Programms sind alle drei Werte, die zur Berech- Berechnen der neuen
nung der neuen Zahl benötigt werden, bekannt: die Anzahl der unge- Zahl anhand der
raden und geraden Zahlen sowie – mit Hilfe der Funktion Len – die analysierten Ziffern
Anzahl der Ziffern der Ausgangszahl. Diese Daten bilden nun die der Ausgangszahl
neue Zahl. Die einzelnen Zahlen müssen jedoch nicht nach einem
bestimmten Algorithmus addiert, sondern wie einzelne Zeichenket-
ten aneinandergereiht werden.
Zu guter Letzt muß das Ergebnis auch noch auf dem Bildschirm des
Benutzers ausgegeben werden. Wenn bei jedem Schleifendurchlauf
die ermittelte Zahl in die ListBox geschrieben wird, sind alle Berech-
nungen über die Zwischenschritte nachvollziehbar. Die folgende Pro-
grammzeile schreibt das neu berechnete Ergebnis immer in die erste
Zeile der ListBox Ergebnis:
Wertigkeit.Additem CStr(Ergebnis), 0
79
Private Sub Ok_Click()
Dim Ergebnis As String
Dim Gerade As Integer
Dim Ungerade As Integer
Dim i As Integer
If IsNumeric(Zahl.Text) then 'Wenn die Zahl
' vom Typ Long ist
Ergebnis = Zahl.Text
Else
Exit Sub
End If
Wenn das Programm gestartet wird, kann die Oberfläche wie in Ab-
bildung 3.15 dargestellt aussehen.
80
Abbildung 3.15: Mögliche Oberfläche des Programms „Zahlenloch 123“
81
Fast jedes Steuerelement besitzt die Eigenschaft Tag, die keinen Ein-
fluß auf das Steuerelement selbst hat. In dieser Eigenschaft kann zu
jedem Steuerelement ein kurzer Beschreibungstext eingegeben wer-
den.
Steuerelement Beschreibungstext
Button OK Hiermit wird das Programm gestartet.
Button ABBRECHEN Hiermit wird die Berechnung beendet.
ListBox Hier sind alle Zwischenschritte der Berechnung enthalten.
TextBox Bitte geben Sie hier die zu berechnende Zahl ein.
Form
Der Eigenschaft Tag des Formularfensters Form ist eine sog. leere Zei-
chenkette zugewiesen worden, da in der Statuszeile auch kein Hilfe-
text ausgegeben werden soll, wenn der Mauszeiger auf keines der
Steuerelemente zeigt. Um den Inhalt der Eigenschaft Tag eines jeden
Steuerelements der Eigenschaft Caption der Statusleiste zuzuweisen,
wird die Funktion MouseMove benötigt. MouseMove wird dann ausge-
führt, wenn das jeweilige Steuerelement mit der Maus angesteuert
wird. Für jedes Steuerelement, das in der Statusleiste einen Hilfetext
enthalten soll, muß die Funktion MouseMove wie folgt angepaßt wer-
den:
Form
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Sin-
gle, Y As Single)
Status.Caption = Form.Tag
End Sub
Der Button OK
Private Sub Ok_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
Status.Caption = Ok.Tag
End Sub
4. In der Eigenschaft Tag der Form ist eine Zeichenkette mit der Länge 0
eingetragen
82
Der Button ABBRECHEN
Private Sub Abbruch_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Status.Caption = Abbruch.Tag
End Sub
83
4 Standardsteuerelemente
In diesem Kapitel wird ein kurzer Überblick über einen Teil der Steu- Elemente für die
erelemente gegeben, die von Visual Basic standardmäßig mitgeliefert Programmsteuerung,
werden. Mit kleinen Beispielprogrammen zu jedem Steuerelement Dateieingabe und
werden dessen jeweiligen Aufgaben erklärt. Dabei wird auch auf die -ausgabe sowie die
wichtigsten Funktionen und Eigenschaften der Steuerelemente ein- Gestaltung der
gegangen. Formulare
Das entstandene Programm aus den Beispielen der Objekte Form, But-
ton und Label soll in einem eigenen Verzeichnis unter dem Namen
VORGABE gespeichert werden. Es wird als Grundlage für alle anderen
Beispiele gelten, um den Programmieraufwand so gering wie möglich
zu halten.
85
Startformular. Ein Programm kann aber auch aus mehreren Formula-
ren bestehen. Um für ein Formular den Programmcode zu entwik-
keln, muß der Editor (siehe Abbildung 4.1) geöffnet werden. Mit ei-
nem Doppelklick der linken Maustaste auf das Formular oder auf ein
Steuerelement, das sich auf dem Formular befindet, wird das Fenster
zur Eingabe des Programmcodes geöffnet. In der ListBox Object läßt
sich das Objekt, zu dem der Programmcode gehören soll, auswählen.
Nach dem Programmstart ist das einzige Objekt jedoch nur das For-
mular Form.
Option Explicit
86
In der Eigenschaft Name wird der Name des Formulars angegeben,
unter dem es den anderen Objekten in diesem Programm bekannt
sein soll. Bei der Namensvergabe sollte darauf geachtet werden, daß
die Objektart in den Namen aufgenommen wird, beispielsweise in-
dem die ersten drei Buchstaben das Objekt beschreiben. Bei einem
Formular bietet sich die Abkürzung frm an. Der festgelegte Name fin-
det sich auch rechts im Projektfenster wieder. Der Name, der vom Sy-
stem beim Erstellen eines neuen Programms vorgegeben wird, ist
Form1.
Die Eigenschaft Caption enthält den Titel oder die Beschreibung des
Fensters. Der hier angegebene Text wird in der blauen Titelleiste des
Fensters angezeigt. Der standardmäßige Parameter für die Eigen-
schaft Caption ist Form1.
4.1.1 Aufgabe
Das folgende Programmbeispiel soll beim Starten des Programms den Eine Aufgabe zum
Titel „Beispiel” in die Kopfzeile des Fensters schreiben. Formular
4.1.2 Lösung
Als erstes wird der Name des Formulars festgelegt; wir wählen hierzu Die Lösung zur
frm_Beispiel. Der Eigenschaft Caption braucht kein Parameter zuge- Formularaufgabe
wiesen zu werden, da in diesem Fall mit einer Konstanten gearbeitet
werden soll. Weitere formularglobale Konstanten und Variablen wer-
den nicht gebraucht. Also ergeben sich für den Abschnitt
folgende Programmzeilen:
Option Explicit
Const Titel = "Beispiel"
Wenn das Programm jetzt gestartet wird, erscheint in der Titelzeile des
Fensters der Titel „Beispiel”. Das Programm kann mit der Tastenkom-
bination (Alt)+(F4) oder über das Menü RUN | END beendet werden.
87
4.2 Das Textelement Label
4.2.1 Aufgabe
Eine Aufgabe zum Zur Ausgabe eines Hilfetextes soll eine Statuszeile auf das aktuelle For-
Textelement mular aufgebracht werden. Der Text, der in der Statuszeile dargestellt
wird, soll zentriert sein, und das Label soll optisch den Eindruck er-
wecken, als sei es in das Formular eingelassen.
4.2.2 Lösung
Die Lösung zur Zunächst muß ein Label auf das geöffnete Formular als Fußzeile auf
Textelementaufgabe das Fenster aufgebracht werden. Um die gestellte Aufgabe zu lösen,
ist kein Programmieraufwand nötig, sondern es müssen die richtigen
Eigenschaften eingestellt werden.
Vergessen Sie nicht die Kennzeichnung als Label im Objektnamen.
Deshalb erhält das Steuerelement den Namen lab_Status. Damit nach
dem Programmstart kein Text in der Statuszeile steht, muß die Eigen-
schaft Caption des Labels leer sein. Für die Ausrichtung des Textes in
einem Label ist die Eigenschaft Alignment zuständig. Um den Text
zentriert auszugeben, muß hier der Wert 2 – Center eingestellt wer-
den. Dieser kann entweder über die Eingabe einer 2 oder das Auswäh-
len dieser Option über die angebotene ListBox erfolgen. Als letzte Ei-
genschaft wird nun der 3D-Effekt eingeschaltet, damit die Statuszeile
optisch versenkt auf dem Bildschirm erscheint. Dazu muß die Eigen-
schaft Border Style den Wert 1 – Fixed Single bekommen.
88
Um nach dem Programmstart mit Sicherheit auszuschließen, daß
Text in der Eigenschaft Caption enthalten ist, kann die Funktion Load
des Formulars wie folgt angepaßt werden.
Ein Button wird z.B. für das Bestätigen von Eingaben oder für das
Starten von Prozessen eingesetzt. Die bekanntesten Schaltflächen
sind die Buttons OK und ABBRECHEN. Auch im vorliegenden Beispiel
wird dieses Steuerelement für beide Buttons verwendet. Die wichtig-
ste Funktion der Schaltfläche ist die Ereignisprozedur Click. Diese Er-
eignis reagiert auf das Aktivieren der Schaltfläche. Bei den Eigen-
schaften ist außer Name und Caption die Eigenschaft Tag von großer
Bedeutung. Sie hat zwar keinen Einfluß auf das Aussehen oder die
Darstellung des Steuerelements, man kann dort aber die Beschrei-
bung des Steuerelements ablegen. Für die Kennzeichnung des But-
tons als Steuerelement im Namen wird im weiteren Verlauf btn ver-
wendet.
4.3.1 Aufgabe
Es sollen zwei Schaltflächen auf das Formular aufgebracht werden. Eine Aufgabe zur
Die eine Schaltfläche ABBRUCH dient zum Beenden des Programms, Schaltfläche
die andere Schaltfläche OK dient zum Starten einer Aufgabe. In die-
sem Fall soll die Aufgabe darin bestehen, zu zählen, wie oft die Schalt-
fläche OK betätigt wurde, und den ermittelten Wert in der Titelleiste
des Fensters auszugeben. Außerdem soll in der Statuszeile eine Be-
schreibung zu der Aufgabe der jeweiligen Schaltfläche ausgegeben
werden.
89
4.3.2 Lösung
Die Lösung zur Zuerst werden die beiden Schaltflächen auf die Form gebracht. Die er-
Aufgabe Schaltfläche ste Schaltfläche erhält bei der Eigenschaft Namen den Wert btn_Ok
und bei der Eigenschaft Caption den Wert Ok. Die andere Schaltfläche
erhält den Namen btn_Abbrechen und die Beschriftung ABBRECHEN.
Die wichtigste Funktion aller Programme, die leider viel zu oft verges-
sen wird, ist das Beenden eines Programms. Aus diesem Grund wird
hier mit diesem Teil begonnen. Um ein Programm zu beenden, gibt
es den Befehl End. Er beendet das Programm von jeder Prozedur aus,
von der er aufgerufen wird. Da die Schaltfläche durch Betätigen der
Maustaste das Programm beenden soll, erhält die Funktion Click der
Schaltfläche btn_Abbrechen den Befehl End.
Die Aufgabe des Buttons btn_Ok besteht darin, zu zählen, wie oft der
Button gedrückt wurde, und anschließend die ermittelte Anzahl in
der Titelleiste des Fensters auszugeben. Diese Aufgabe wird ebenfalls
über die Funktion Click gelöst, jedoch dieses Mal über das Click-Ereig-
nis des Schaltelements mit Namen btn_Ok.
90
Private Sub Form_Load()
frm_Beispiel.Caption = Titel
lab_Status.Caption = ""
Anzahl = 0
End Sub
Wenn das Programm nun gestartet und mit der Maus auf die Schalt-
fläche Ok gedrückt wird, so erscheint die geforderte Ausgabe in der Ti-
telleiste des Fensters. Mit Betätigung der Schaltfläche Abbrechen wird
das Programm sinngemäß beendet. Jetzt fehlt noch die Ausgabe des
Hilfetextes zu der jeweiligen Schaltfläche in der Statuszeile. Die mei-
sten Steuerelemente bieten hierfür die Funktion MouseMove an. Die
Funktion MouseMove wird aktiviert, wenn die Maus über das jeweilige
Steuerelement bewegt wird. Für den Hilfetext, der in der Statuszeile
ausgegeben werden soll, kann man die Eigenschaft Tag, die ebenfalls
von den meisten Steuerelementen unterstützt wird, nutzen. Die
Schaltfläche btn_Ok erhält in der Eigenschaft Tag den Wert „Hiermit
werden die Eingaben bestätigt.”, und die Schaltfläche btn_Abbrechen
erhält den Wert „Hiermit wird das Programm beendet.”.
91
Private Sub Form_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
lab_Status.Caption = frm_Beispiel.Tag
End Sub
Bewegt man die Maus über ein Steuerelement, wird in der Statuszeile
der Text ausgegeben, der in der Eigenschaft Tag enthalten ist. Da hier
der Inhalt fehlt, fehlt auch der Text in der Statuszeile.
4.4.1 Aufgabe
Eine Aufgabe Es soll ein Programm entwickelt werden, mit dem Längenmaße um-
zum Textelement gerechnet werden können. Dafür werden zwei Texteingabeelemente
benötigt. Das erste Element txt_Wert dient zum Erfassen des Ur-
sprungsmaßes, beispielsweise Kilometer. In das zweite Element
txt_Faktor wird der Umrechnungsfaktor eingegeben. Bei der Umrech-
92
nung z.B. von Kilometer in Seemeilen beträgt dieser Faktor 1,852. Das
Ergebnis wird beim Drücken des Buttons OK berechnet und in ein La-
bel lab_Ergebnis geschrieben. Wird ein Eingabewert verändert, soll der
Inhalt des Labels lab_Ergebnis gelöscht werden.
4.4.2 Lösung
Option Explicit Die Lösung zur Auf-
gabe Textelement
Private Sub btn_Ok_Click()
If txt_Wert.Text<>"" And txt_Faktor.Text<>"" Then
lab_Ergebnis.Caption = CDbl(txt_Wert.Text) * _
CDbl(txt_Faktor.Text)
End If
End Sub
93
wendet. Daraus ergibt sich der Name pic_Bild für das folgende Bei-
spiel.
Sub Linien_Zeichen()
Const Anzahl_Linien = 15 'Anzahl der zu zeichnenden
'Linien
Dim i As Integer
Dim Breite As Integer 'Breite der PictureBox
Dim Hoehe As Integer 'Höhe der PictureBox
Dim delta_x As Double 'Größe der horizontalen
'Schrittweite
Dim delta_y As Double 'Größe der vertikalen
'Schrittweite
If Anzahl Mod 2 = 0 Then 'Wenn die PictureBox
'gelöscht werden soll
pic_Bild.Cls 'Lösche den Inhalt der
'PictureBox
Exit Sub 'Beende die Prozedur
End If
Breite = pic_Bild.ScaleWidth 'Ermittle die Breite
'der PictureBox
Hoehe = pic_Bild.ScaleHeight 'Ermittle die Höhe
'der PictureBox
delta_y = Hoehe / Anzahl_Linien 'Berechne die
'vertikale Schrittweite
For i = 0 To Anzahl_Linien 'Zeichne Anzahl_Linien
pic_Bild.ForeColor = QBColor(i Mod 15) 'Setze
' die Zeichenfarbe
'Zeichne eine Linie
pic_Bild.Line (0, i * delta_y)- _
(Breite, Hoehe - (i * (delta_y / 3)))
Next i 'Zeichne die nächste Linie
End Sub
1. Linien_Zeichen
2. Call Linien_Zeichen
Damit die Grafik nicht verlorengeht, wenn ein anderes Fenster über
das Grafikprogramm gelegt wird, muß die Eigenschaft AutoRedraw den
Wahrheitswert TRUE erhalten.
94
Ist die Grafik größer als das Steuerelement, werden die Seiten abge-
schnitten. Um die Größe eines Bildfeldsteuerelements an die Grafik
anzupassen, muß der Eigenschaft AutoSize der Wert True zugewiesen
werden.
96
4.8.1 Aufgabe
Es soll ein Programm erstellt werden, in dem per Schalter die Sicht- Eine Aufgabe zum
barkeit eines Textfensters eingestellt wird. Der zweite Button gibt sei- Kontrollkästchen-
nen aktuellen Zustand in diesem Textfenster aus, d.h. das Kontroll- steuerelement
kästchen-Steuerelement schreibt den Wert „Wahr” in das Textfeld,
wenn es aktiviert ist; ist es nicht aktiviert, erscheint der Wert „Falsch”.
4.8.2 Lösung
Um ein Steuerelement unsichtbar zu machen, muß man auf die Lösung zur Aufgabe
Eigenschaft Visible (sichtbar) zurückgreifen. Enthält die Eigenschaft Kontrollkästchen-
Visible den Wert „Falsch”, ist das Steuerelement während der steuerelement
Programmausführung nicht sichtbar.
97
4.9 Das Optionsfeld OptionButton
Das Optionsfeld ist wie die CheckBox ein Schalter, der nur die Eigen-
schaften Wahr oder Falsch annehmen kann. Jedoch sind alle Options-
feldsteuerelemente einer Gruppe, z.B. gruppiert durch ein Frame,
voneinander abhängig. Immer nur ein Optionsschalter kann den
Wert Wahr haben. Selektiert der Anwender einen Schalter, der den
Zustand Falsch hat, wird der Schalter mit dem Zustand Wahr auf
Falsch gesetzt, und dem selektierten Schalter wird der Zustand Wahr
zugewiesen. Ein Schalter, der den Zustand Wahr hat, kann nicht
durch nochmaliges Anklicken wieder auf Falsch gesetzt werden. Man
kann sich diese Art von Schaltung wie bei einem Radio vorstellen: Es
kann immer nur ein Programmschalter auf einmal ausgewählt sein,
wobei auch immer einer der möglichen Programmschalter ausge-
wählt ist. In Visual Basic können damit auch verschiedene Berechti-
gungsstufen erteilt werden, so z.B.:
98
Eigenschaft mögliche Werte Beschreibung
ToolTipText String Der Inhalt dieser Eigenschaft wird in einer
Sprechblase als Erklärung zu einem Steu-
erelement ausgegeben, wenn die Maus
eine bestimmte Zeit über dem Steuerele-
ment stehenbleibt.
Tabelle 4.3: Die wichtigsten Eigenschaften des Optionenschalters
4.9.1 Aufgabe
Es soll ein Programm erstellt werden, in dem über drei Optionen- Eine Aufgabe zum
schalter festgelegt wird, ob der Schalter OK unsichtbar, sichtbar oder Optionenschalter
verfügbar sein soll. Dazu werden drei Steuerelemente benötigt. We-
gen der besseren Übersichtlichkeit sollen sie in einem Frame zusam-
mengefaßt werden.
4.9.2 Lösung
Um ein Steuerelement für die Eingabe des Benutzers zu sperren, gibt Die Lösung zur Auf-
es die Eigenschaft Enabled (verfügbar). Ist der Wert der Eigenschaft gabe Optionenschalter
Enabled „Wahr”, kann das Steuerelement für eine Eingabe genutzt
werden, ist der Wert „Falsch”, so ist das Steuerelement zwar sichtbar,
jedoch kann keine Eingabe gemacht werden.
!
!
99
4.10 Das Listenfeld ListBox
In einer ListBox können, wie der Name schon sagt, Listen angezeigt
werden. Die einzelnen Zeilen der Liste können auch mehrspaltige
Datensätze enthalten, die durch ein bestimmtes Zeichen getrennt
werden. Die Listen können über Bildlaufleisten gescrollt, einzelne Li-
stenelemente dabei ausgewählt werden; direkte Eingabe von Daten
in das Listenfeld-Steuerelement ist jedoch nicht möglich. Diese Steu-
erelemente werden z.B. verwendet, um Dateien in einem Verzeichnis
anzuzeigen. Die Liste mit den Dateien kann gescrollt werden, und es
lassen sich auch Dateien auswählen. Um aber z.B. den Dateinamen
zu ändern, muß ein anderes Steuerelement verwendet werden. Für
die Verwaltung der Datensätze eines Listenfeld-Steuerelements ste-
hen einige Befehle zur Verfügung. Im folgenden werden die wichtig-
sten Befehle aufgeführt.
100
4.10.1 Einen neuen Datensatz eintragen
Mit dem Befehl AddItem können neue Datensätze dem Listenfeld- Eintragen eines neuen
Steuerelement hinzugefügt werden. Datensatzes in ein
Listenfeldsteuerelement
[ListBoxname].AddItem Datensatz[, Position]
4.10.4 Aufgabe
Eine ListBox soll beim Programmstart mit Namen gefüllt werden. Bei Eine Aufgabe zum
einem Doppelklick auf einen bestimmten Namen wird dieser in eine Steuerelement
zweite ListBox verschoben. Mit dem Button OK werden alle Namen Listenfeld
aus der zweiten ListBox entfernt und wieder zurück in die erste ver-
schoben. Bei jedem Namen, der mit Ok zurückverschoben wird, er-
scheint für kurze Zeit ein Meldungsfenster mit folgender Meldung:
„Der Brief für Name wird soeben gedruckt.” Die Reihenfolge, in der
die Briefe „gedruckt” werden, entspricht der, in der die Namen in die
zweite ListBox eingetragen wurden. Um einen Namen, der versehent-
lich in die zweite ListBox kopiert wurde, wieder zu entfernen, muß
ebenfalls ein Doppelklick auf den zu löschenden Namen erfolgen.
4.10.5 Lösung
Private Sub Form_Load() Die Lösung für die
lst_Namen.AddItem ("Flink Fritze") Aufgabe Listenfeld-
lst_Namen.AddItem ("Hastig Hugo") steuerelement
lst_Namen.AddItem ("Simson Simone")
"
"
101
lst_Namen.AddItem ("Pundy Ale")
lst_Namen.AddItem ("Super Man")
End Sub
102
4.11.1 Aufgabe
Es soll nochmals ein Programm zum Umrechnen eines Wertes in ei- Eine Aufgabe für die
nen anderen erstellt werden. Im Gegensatz zu dem ersten Beispiel soll ComboBox
das Steuerelement für den Umrechnungsfaktor jedoch eine Combo-
box sein, die schon folgende Umrechnungsfaktoren enthält:
Kilometer in Seemeilen,
Seemeilen in Kilometer,
Stunden in Minuten.
4.11.2 Lösung
Private Sub Form_Load() Die Lösung zur
'Die Combobox mit Vorgabewerten füllen Aufgabe ComboBox
Call cmb_Faktor.AddItem("1,852", 0)
Call cmb_Faktor.AddItem("0,53996")
Call cmb_Faktor.AddItem("60", 2)
End Sub
Helligkeit,
Lautstärke und
Geschwindigkeit
104
4.12.1 Aufgabe
Es soll ein Programm entwickelt werden, das in einer TextBox immer Eine Aufgabe für die
den aktuellen Positionswert ausgibt, an dem sich der Markierungs- ScrollBars
balken der Bildlaufleiste befindet.
4.12.2 Lösung
Private Sub vsc_Zahl_Change() Die Lösung für die Auf-
lab_Zahl.Caption = vsc_Zahl.Value gabe Scrollbars
End Sub
Tabelle 4.5: Die wichtigsten Eigenschaften der Datei-, Verzeichnis- und Laufwerklistenfelder
4.13.2 Lösung
Die Lösung zur Zuerst muß gewährleistet werden, daß die ListBoxen der linken und
Aufgabe Listenfelder der rechten Seite sich gegenseitig aktualisieren. Dafür wird das Ereig-
nis Change der Laufwerks- und Verzeichnislistenfelder benötigt. Wird
in einem Laufwerklistenelement das aktuelle Laufwerk geändert,
muß dieses an das zugehörige Verzeichnislistenelement weitergege-
ben werden. Ebenso muß eine Änderung im Verzeichnislistenfeld so-
fort an das Dateilistenelement weitergegeben werden.
106
'Vergleichsliste anzeigen
lst_Vergleich.Visible = True
lab_Vergleich.Visible = True
'Vergleich starten
lab_Vergleich.Caption = "Prüfe das Verzeichnis"
Call Vergleichen(dir_links, dir_rechts, _
lst_Vergleich)
Call Anzahl_Dateien(lst_Vergleich.ListCount)
Else
'Schaltflächenbeschriftung umbenennen
btn_vergleich.Caption = Button
'Vergleichsliste verbergen
lst_Vergleich.Visible = False
lab_Vergleich.Visible = False
'Verzeichnisbäume anzeigen
frm_links.Visible = True
frm_rechts.Visible = True
End If
End Sub
Der Zeitgeber Timer erzeugt nach einer bestimmten Zeit ein Ereignis.
Mit ihm lassen sich somit Prozesse in bestimmten Zeitintervallen
starten oder für eine bestimmte Zeit sperren. Dieses Zeitintervall
kann zwischen 1 und 65.535 Millisekunden liegen. Der Zeitgeber ist
während der Ausführung des Programms unsichtbar und kann somit
vom Anwender nicht beeinflußt werden. Zur Identifizierung eines
Steuerelements als Zeitgeber werden im folgenden die drei Buchsta-
ben tim verwendet.
108
Eigenschaft mögliche Werte Beschreibung
(Name) String Über den Namen wird das Steuerelement
im Programmcode angesprochen.
Enabled True/False True startet den Zeitgeber, er erzeugt
Impulse.
False stoppt den Timer, er erzeugt keine
Impulse mehr.
Intervall 1-65'536 Diese Eigenschaft beinhaltet die Zeit in
Millisekunden, die zwischen zwei Zählim-
pulsen des Timers liegen soll.
Tag String Diese Eigenschaft steht zur freien Verfü-
gung, d.h. sie hat keinen direkten Einfluß
auf das Steuerelement, sondern kann z.B.
als Zwischenspeicher für das Steuerelement
dienen.
4.14.1 Aufgabe
Es soll eine einfache Stoppuhr mit den Funktionen Eine Aufgabe für
den Zeitgeber
Start,
Stop,
Restart und
Reset
programmiert werden.
4.14.2 Lösung
Als Grundlage für das zu erstellende Programm kann das Programm Die Lösung zur
Vorlage genommen werden. Die Schaltfläche btn_Ok ist dabei über- Aufgabe Zeitgeber
flüssig und kann somit gelöscht werden. Die zusätzlich benötigten
Steuerelemente werden in Tabelle 4.7 mit ihren einzustellenden Ei-
genschaften aufgeführt.
Für das Messen der vergangenen Zeit werden folgende Variablen be-
nötigt:
110
4.15 Das Liniensteuerelement Linie
112
Abbildung 4.19: Bewegungsanteile des Balls einer Zeiteinheit
Bewegungsanteil horizontal =
Stößt der Ball gegen eine der seitlichen Wände, muß der horizontale
Bewegungsanteil mit –1 multipliziert werden, und schon „prallt” der
Ball von der Wand ab. Das gleiche gilt für den vertikalen Bewegungs-
anteil, wenn der Ball auf die obere oder untere Wand trifft. Ob der
Ball auf eine Wand trifft, läßt sich dadurch feststellen, daß der Rand
des Balls einen Wert annimmt, der außerhalb der Eigenschaftswerte
liegt. Ausgeführt wird die Berechnung für die neue Position des Balles
bei jedem Bewegungszyklus.
Um die Bewegung des Balls zu starten, wird das Ereignis Click der
Schaltfläche OK verwendet. Wird dieser Schalter ausgelöst, soll sich
die Beschriftung in STOP ändern und dem Zeitgeber das Intervall zu-
gewiesen werden, in dem er einen Bewegungsschritt des Balls ausfüh-
ren soll.
114
Else
Beschriftung = btn_Ok.Caption
btn_Ok.Caption = "&Stop"
tim_Ball.Interval = 5
End If
End Sub
Nach dem ersten Betätigen der Schaltfläche fängt der Ball an, sich
über den Bildschirm zu bewegen. Trifft er auf eine Wand, prallt er
wieder ab und ändert dabei seine Richtung. Wird nach einer gewissen
Zeit die Schaltfläche STOP betätigt, verharrt der Ball auf der letzten Po-
sition. Nach einem erneuten Betätigen des Schalters führt er die Be-
wegung weiter, als sei diese nie unterbrochen worden.
In Visual Basic gibt es nun die Möglichkeit, diese vom System zur Ver-
fügung gestellten Dialogboxen in ein eigenes Programm einzubin-
den. Dazu wird das Steuerelement CommonDialog benötigt. Hiermit
lassen sich alle Einstellungen wie gewohnt setzen und auch abfragen,
während das Programm läuft. Auf dem Fenster, auf dem das Steuer-
element aufgebracht wurde, ist jedoch nur ein kleines Steuerelement
zu sehen (vgl. Abschnitt „Der Zeitgeber Timer“). Während der Lauf-
zeit des Programms ist gar kein Steuerelement auf der Oberfläche des
Fensters zu sehen.
116
Die Befehle zum Auf-
Aufruf zugehöriger Dialog rufen der einzelnen
ShowOpen Öffnet die Dialogbox, um Dateien zu öffnen. Standarddialoge
Abschnitt
ShowSave Öffnet die Dialogbox, um Dateien zu speichern.
Abschnitt
ShowColor Öffnet die Dialogbox, um die Farben einzustellen.
Abschnitt
ShowFont Öffnet die Dialogbox, um die Schriftart festzulegen.
Abschnitt Die Eigenschaften des Dialogs Schriftart
ShowPrinter Öffnet die Dialogbox, um den Drucker festzulegen.
Abschnitt
ShowHelp Öffnet die Dialogbox für die Hilfeeinstellungen.
Abschnitt
117
Ein Standarddialog ist das Öffnen und Speichern von Dateien. Hierzu
können Eigenschaften eingestellt werden, die dann im Dialogfenster
berücksichtigt werden. Sie dienen u.a. dazu, um beispielsweise Da-
teien zu filtern oder um die Anzahl der darzustellenden Dateien in ei-
nem Verzeichnis zu begrenzen. In Tabelle 4.10 sind die Eigenschaften
des Dialogs DATEI ÖFFNEN/SPEICHERN beschrieben.
Eigenschaft Beschreibung
DialogTitle Hier wird die Überschrift des Standarddialogs festgelegt.
FileName Innerhalb dieser Option wird der Dateiname, der gespeichert oder geladen werden
soll, erfaßt.
InitDir Innerhalb dieser Option wird das Verzeichnis, das nach dem Öffnen aktiv sein soll,
festgelegt.
Filter Mit dieser Option läßt sich festlegen, welche Dateitypen angezeigt werden sollen
und welche nicht (z.B. nur Dateien mit der Endung BAK). Des weiteren können auch
mehrere Filter und ihre Beschreibung eingegeben werden.
Text (*.txt; *.csv) | *.txt; *.tsv | Paintbrush (*.pcx) | *.pcx;
Flags Hier werden die Optionen für den Dialog festgelegt: welche Optionen angezeigt und
eingestellt werden können und welche nicht.
DefaultExt Diese Eigenschaft legt die Standard-Dateinamenserweiterung fest oder liefert diese
zurück.
MaxFileSize Diese Option reserviert den Speicher für die Länge der Dateinamen, die in der Dialog-
box angezeigt werden können. Der Wert ist vom Typ Integer. Voreingestellt ist der
Wert 256.
FilterIndex Mit dieser Eigenschaft wird der Standardfilter definiert, wenn in der Eigenschaft Filter
mehr als ein Filter angegeben wurde.
CancelError Mit dieser Eigenschaft wird festgelegt, ob beim Drücken der Taste ABBRECHEN ein Feh-
lerwert generiert wird oder nicht.
True Fehlerwert wird generiert.
False Fehlerwert wird nicht generiert.
Name.ShowOpen
Danach ist das Fenster modal geöffnet, d. h. es kann erst mit dem Pro-
gramm weitergearbeitet werden, wenn das Fenster zum Öffnen oder
Speichern der Dateien wieder geschlossen wurde.
118
4.18.2 Die Eigenschaften des Dialogs Farbpalette
Eigenschaft Beschreibung
Color Diese Eigenschaft beinhaltet die Nummer der Farbe, die dar-
gestellt werden soll.
Flags Hier werden die Optionen für den Dialog festgelegt: welche
Optionen angezeigt und eingestellt werden können und wel-
che nicht.
CancelError Mit dieser Eigenschaft wird festgelegt, ob beim Drücken der
Taste ABBRECHEN ein Fehlerwert generiert wird oder nicht.
True Fehlerwert wird generiert.
False Fehlerwert wird nicht generiert.
Name.ShowColor
Danach ist das Fenster modal geöffnet, d. h. es kann erst mit dem Pro-
gramm weitergearbeitet werden, wenn das Fenster zum Definieren
der Farben wieder geschlossen wurde.
119
4.18.3 Die Eigenschaften des Dialogs Schriftart
Eigenschaft Beschreibung
FontName Diese Eigenschaft gibt die Schriftart an, die in dem Steuerelement verwendet wird
oder verwendet werden soll.
FontSize Diese Eigenschaft gibt die Größe der Schriftart an.
Min Diese Eigenschaft definiert die kleinste zulässige Schriftgröße oder liefert diese
zurück.
Max Diese Eigenschaft definiert die größte zulässige Schriftgröße oder liefert diese zurück.
Flags Diese Eigenschaft legt die Optionen für den Dialog fest: welche Optionen angezeigt
und eingestellt werden können und welche nicht.
CancelError Mit dieser Eigenschaft wird festgelegt, ob beim Drücken der Taste ABBRECHEN ein
Fehlerwert generiert wird oder nicht.
True Fehlerwert wird generiert.
False Fehlerwert wird nicht generiert.
Bold Hier wird festgelegt, ob die Schrift in Fettbuchstaben dargestellt werden soll
(Beispiel).
Italic Hier wird festgelegt, ob die Buchstaben in Kursivschrift dargestellt werden sollen
(Beispiel).
Underline Hier wird festgelegt, ob die Buchstaben unterstrichen werden sollen (Beispiel).
Strikethru Hier wird festgelegt, ob die Buchstaben durchgestrichen werden sollen (Beispiel).
120
Aufgerufen wird der Dialog mit dem Befehl
Name.ShowFont
Danach ist das Fenster modal geöffnet, d. h. es kann erst mit dem Pro-
gramm weitergearbeitet werden, wenn das Fenster zum Definieren
der Schriftart wieder geschlossen wurde.
Für die Steuerung des Druckers und die Druckerauswahl wird der
Standarddialog Drucken unterstützt. Er entspricht dem von Windows
zur Verfügung gestellten Dialog. Folgende Eigenschaften werden von
diesem Dialog unterstützt und können somit gesetzt werden.
Eigenschaft Beschreibung
Copies Diese Eigenschaft bestimmt die Anzahl der Kopien, die von dem Dokument gedruckt wer-
den sollen.
Flags Hier werden die Optionen für den Dialog festgelegt: welche Optionen angezeigt und ein-
gestellt werden können und welche nicht.
FromPage Hier muß die erste Seite des Bereichs, der gedruckt werden soll, definiert werden.
ToPage Hier muß die letzte Seite des Bereichs, der gedruckt werden soll, definiert werden.
Min Diese Eigenschaft legt den kleinsten zulässigen Wert für den Druckbereich fest oder liefert
diesen zurück.
Max Diese Eigenschaft legt den größten zulässigen Wert für den Druckbereich fest oder liefert
diesen zurück.
121
Eigenschaft Beschreibung
PrinterDefault Mit dieser Eigenschaft wird festgelegt, ob die Einstellungen, die der Benutzer in dem
Druckdialog verändert, auch die Einstellungen des Systems verändern, d. h. beim Bestäti-
gen der Einstellungen im Druckdialog werden diese in der zugehörigen Konfigurationsda-
tei gespeichert.
True Einstellungen speichern
False Einstellungen verwerfen
CancelError Mit dieser Eigenschaft wird festgelegt, ob beim Drücken der Taste ABBRECHEN ein Fehler-
wert generiert wird oder nicht.
True Fehlerwert wird generiert.
False Fehlerwert wird nicht generiert.
Name.ShowPrinter
Danach ist das Fenster modal geöffnet, d. h. es kann erst mit dem Pro-
gramm weitergearbeitet werden, wenn das Fenster zur Druckeraus-
gabe wieder geschlossen wurde.
Mit dem Dialog Hilfe wird der Text aus einer Hilfedatei angezeigt. Da-
bei läßt sich festlegen, ob der Standardhilfedialog z.B. kontextabhän-
gig ist, also zu dem aktuellen Menüpunkt oder Fenster Hilfe anbietet.
Es kann aber auch der Index der Hilfedatei angezeigt werden.
122
Eigenschaft Beschreibung
HelpContext Diese Eigenschaft legt die Kennung für den Kontext fest, der zu dieser Hilfe gehört,
oder liefert diesen zurück.
HelpCommand Diese Eigenschaft legt fest, um welche Art von Hilfe es sich handelt: eine kontextab-
hängige oder eine Indexhilfe. Die Konstantenwerte, die dieser Eigenschaft zugeord-
net werden können, sind im zugehörigen Objektkatalog enthalten.
HelpKey Diese Eigenschaft legt das Stichwort fest, mit dem die zugehörige Hilfe verbunden ist,
oder liefert dieses zurück.
HelpFile Hiermit werden der Pfad und der Name der Hilfedatei, die dem Dialog zugeordnet
ist, festgelegt oder zurückgeliefert.
Name.ShowHelp
Danach ist das Fenster modal geöffnet, d. h. es kann erst mit dem Pro-
gramm weitergearbeitet werden, wenn das Fenster wieder geschlos-
sen wurde.
4.18.6 Zusammenfassung
Mit dem Steuerelement CommonDialogBox lassen sich alle Standard- Zusammenfassung zu
dialoge schnell und einfach in ein Visual Basic-Programm integrie- dem Steuerelement
ren. Ein Anwender wird sich somit sehr schnell in diesen Dialogen CommonDialogBox
zurechtfinden, da er sie von anderen Programmen bereits kennt.
Beispiel 1
In diesem Beispiel wird der Standarddialog Schriftart aufgerufen. Beispielprogamm zum
Nach erfolgter Definition des Benutzers werden die Einstellungen in Schriftarten-Standard-
das aufrufende Programm übernommen. dialog
Public btn_Schrift_Click()
dlg_Beispiel.ShowFont
End Sub
Beispiel 2
In diesem Beispiel wird für jeden Dialog eine Schaltfläche definiert, Beispielprogramm
die einen der Dialoge aufruft. Es werden keine Werte eingelesen. Die- zum Aufrufen aller
ses Beispiel dient lediglich dazu, die einzelnen Dialogfenster zu zei- Standarddialoge
gen.
123
Public Sub btn_Dialog_Click(Index as Integer)
select Case Index
Case 0
dlg_Beispiel.ShowOpen
Case 1
dlg_Beispiel.ShowSave
Case 2
dlg_Beispiel.ShowColor
Case 3
dlg_Beispiel.ShowFont
Case 4
dlg_Beispiel.ShowPrinter
Case 5
dlg_Beispiel.ShowHelp
End Case
End Sub
Die Register in Visual Basic sind wie die Register eines Karteikastens
aufgebaut. Auch dieses Steuerelement muß über den Dialog, der in
Abschnitt 4.17 beschrieben wurde, hinzugefügt werden. In der Liste
des Komponenten-Dialogs handelt es sich um den Eintrag
124
den, daß ein Register in einem Fenster nicht zu viele Registerblätter
enthält, da sonst die Übersichtlichkeit wieder verlorengeht. Es bietet
sich in solchen Fällen an, auf eine Seite des Registers ein neues Regi-
ster aufzubringen.
4.19.1 Aufgabe
Es soll ein Programm entwickelt werden, das sechs Registerblätter hat Eine Aufgabe zum
und in ein Beschreibungsfeld schreibt, welches der Register aktiv ist. Steuerelement
Registerblätter
4.19.2 Lösung
Private Sub tab_Beispiel_Click(PreviousTab As Integer) Die Lösung zu den
Lab_Ausgabe.Caption = tab_Beispiel.Caption Registerblättern
End Sub
,$
125
Das Programmfenster ist das Hauptfenster. Auch wenn kein Doku-
ment geöffnet ist, ist dieses Hauptfenster aktiv. Werden Dokumente
geöffnet, werden sie in Fenstern dargestellt, die sich innerhalb des
Programmfensters befinden und auch innerhalb dieses Fensterrah-
mens das gleiche Verhalten zeigen wie ein Hauptfenster auf der Desk-
top-Oberfläche. Wird das MDI-Fenster über den Rand des Hauptfen-
sters hinaus verschoben, wird dieser einfach abgeschnitten.
4.20.1 Aufgabe
Eine Aufgabe zum Es soll ein Programm entwickelt werden, in dem über den Button
MDI-Fenster MDI NEU ein Dokumentfenster geöffnet wird. Nach dem Öffnen des
Fensters lautet der Fenstertitel folgendermaßen:
4.20.2 Lösung
Dim Nr As Integer
MDI-Fenster erzeugen
126
Private Sub MDIForm_Click()
Dim Fenster As New frm_Client
Nr = Nr + 1
Fenster.Caption = "Fenster Nr " & Nr & " um " & _
Time() & " geöffnet"
Fenster.Show
End Sub
,$
127
5 Wichtige Eigenschaften der
Steuerelemente
Jedes Steuerelement hat bestimmte Eigenschaften, die vom Anwen- Eigenschaften der
der, Entwickler oder vom Programm beeinflußt und geändert werden Steuerelemente nicht
können. Die Eigenschaften der Steuerelemente lassen sich in drei immer ändern
Gruppen einteilen:
129
5.1 Die Eigenschaft (Name)
Eigenname des Die Eigenschaft (Name) identifiziert das Steuerelement oder das For-
Steuerelements mular im Programmcode. Diese Eigenschaft besitzen alle Elemente
von Visual Basic. Der Name muß immer mit einem Buchstaben oder
einem Unterstrich beginnen. Wird vom Entwickler kein (Name) ver-
geben, so vergibt Visual Basic den Namen selbständig. Der von Visual
Basic vergebene Name ist so aufgebaut, daß er zum einen das Objekt
beschreibt und zum anderen eine laufende Nummer enthält, deren
Wert mit jedem neuen Objekt vom selben Typ um eins erhöht wird.
Dieser Name sollte vom Entwickler dann in einen sogenannten spre-
chenden Namen umgewandelt werden. Wird zum Beispiel ein Text-
element Label auf das Fenster aufgebracht, mit dem ein Ergebnis dar-
gestellt werden soll, bietet sich der Name Lab_Ergebnis für dieses
Steuerelement an.
Der Name für ein Steuerelement sollte vergeben werden, bevor das er-
ste Ereignis programmiert wird, da die verwendeten Ereignisse nicht
umbenannt werden. Bei einer späteren Umbenennung sind dem
Steuerelement somit keine Funktionen mehr zugeordnet. Die ver-
wendeten Funktionen sind jedoch nicht gelöscht, sondern in dem
Abschnitt GENERAL des Formulars gespeichert.
1 9
2 10
3 11
4 12
5 13
6 14
7 15
99 Benutzerdefiniert
137
6.1 Click – der einfache Mausklick
Reagieren auf ein- Das Ereignis Click wird ausgelöst, wenn sich der Mauspfeil auf einem
maliges Klicken mit der Steuerelement befindet und die linke Maustaste einmal gedrückt
linken Maustaste wird. Die Prozedur benötigt keine Parameter, da es immer nur eine
Maus gibt, mit der dieses Ereignis ausgelöst wird. Click selbst reagiert
nur auf die linke Maustaste oder das Bestätigen mit der (¢)-Taste.
Hauptsächlich findet das Ereignis Click bei den Schaltflächen BUTTON
Anwendung.
Parameter Beschreibung
Index Wenn das Steuerelement ein Teil eines Feldes von
Steuerelementen ist, identifiziert diese Indexnummer
das Steuerelement eindeutig.
Parameter Beschreibung
Index Wenn das Steuerelement ein Teil eines Feldes von
Steuerelementen ist, identifiziert diese Indexnummer
das Steuerelement eindeutig.
Parameter Beschreibung
Index Wenn das Steuerelement ein Teil eines Feldes von
Steuerelementen ist, identifiziert diese Indexnummer
das Steuerelement eindeutig.
Mit den folgenden Befehlen lassen sich Fenster aus dem Hauptspei-
cher entfernen und wieder hineinladen.
6.4 GotFocus
Dieses Ereignis wird ausgelöst, wenn das Steuerelement als aktives Wenn ein Steuer-
Element auf die Oberfläche gesetzt wird. Dies geschieht mit einem element oder ein
Mausklick auf das Steuerelement, mit der (ÿ)-Taste oder mit dem Formular selektiert
Programmcode über den Befehl SetFokus. Das Gegenstück zu GotFocus wird
ist LostFocus (den Fokus verlieren).
Parameter Beschreibung
Index Wenn das Steuerelement ein Teil eines Feldes von
Steuerelementen ist, identifiziert diese Indexnummer
das Steuerelement eindeutig.
139
6.5 KeyDown und KeyUp – Drücken und
Loslassen einer Tastaturtaste
Reagieren auf das Wenn eine Taste auf der Tastatur gedrückt wird, tritt das Ereignis Key-
Drücken oder Los- Down ein. Wird die gedrückte Taste wieder losgelassen, tritt das Ereig-
lassen einer beliebigen nis KeyUp ein. Wenn sich auf dem Fenster eine Schaltfläche mit der
Taste auf der Tastatur Eigenschaft Default = True befindet, kann bei keinem anderen Steuer-
element geprüft werden, ob die Taste (¢) gedrückt wurde. Dasselbe
gilt für die Taste (Esc), wenn sich auf dem Fenster eine Schaltfläche
mit der Eigenschaft Cancel = True befindet.
Parameter Beschreibung
Index Wenn das Steuerelement ein Teil eines Feldes von
Steuerelementen ist, identifiziert diese Indexnummer
das Steuerelement eindeutig.
KeyCode Dieser Parameter liefert den Tastencode der gedrück-
ten Taste zurück. Die Definitionen der einzelnen Tasten
sind in der Datei Constant.txt von Visual Basic enthal-
ten.
Shift Diese Variable enthält den Status der Tasten (ª),
(Strg) und (Alt):
1 Die (ª)-Taste ist gedrückt.
2 Die (Strg)-Taste ist gedrückt.
4 Die (Alt)-Taste ist gedrückt.
Parameter Beschreibung
Index Wenn das Steuerelement ein Teil eines Feldes von
Steuerelementen ist, identifiziert diese Indexnummer
das Steuerelement eindeutig.
Button Diese Variable gibt an, welche Maustaste dieses Ereig-
nis ausgelöst hat:
1 Die linke Maustaste ist gedrückt.
2 Die rechte Maustaste ist gedrückt.
4 Die mittlere Maustaste ist gedrückt.
Shift Diese Variable enthält den Status der Tasten (ª),
(Strg) und (Alt):
1 Die (ª)-Taste ist gedrückt.
2 Die (Strg)-Taste ist gedrückt.
4 Die (Alt)-Taste ist gedrückt.
Anhand des Wertes in der Variablen Shift läßt sich
genau nachprüfen, welche Tastenkombination dieser
Sondertasten gerade gedrückt wird.
X,Y Diese beiden Variablen enthalten die aktuelle Mauspo-
sition:
X Horizontale Mausposition.
Y Vertikale Mausposition.
141
Parameter Beschreibung
Index Wenn das Steuerelement ein Teil eines Feldes von
Steuerelementen ist, identifiziert diese Indexnummer
das Steuerelement eindeutig.
Button Diese Variable gibt an, welche Maustaste dieses Ereig-
nis ausgelöst hat:
1 Die linke Maustaste ist gedrückt.
2 Die rechte Maustaste ist gedrückt.
4 Die mittlere Maustaste ist gedrückt.
Anhand des Wertes in der Variablen Button läßt sich
genau prüfen, welche Maustasten gedrückt sind.
Shift Diese Variable enthält den Status der Tasten (ª),
(Strg) und (Alt):
1 Die (ª)-Taste ist gedrückt.
2 Die (Strg)-Taste ist gedrückt.
4 Die (Alt)-Taste ist gedrückt.
Anhand des Wertes in der Variablen Shift läßt sich
genau nachprüfen, welche Tastenkombination dieser
Sondertasten gerade gedrückt wird.
X,Y Diese beiden Variablen enthalten die aktuelle Mauspo-
sition:
X Horizontale Mausposition.
Y Vertikale Mausposition.