Wenn man unter Windows ein Programm startet, öffnet sich auf dem Bildschirm sein Programmfenster, sein Formular. Die Formulare von verschiedenen Programmen unterscheiden sich natürlich voneinander, sie sind beispielsweise verschieden groß, haben verschiedene Farben, und es sind verschiedene Dinge darauf zu sehen. Die Besonderheiten, die das Fenster selbst betreffen, wie Größe, Farbe, Titel usw. nennt man die Eigenschaften des Fensters. Und die Dinge, die innen im Fenster zu sehen sind, meistens Texte, Bilder, Icons oder ähnliches, nennt man Objekte oder Steuerelemente. Diese Objekte selbst haben auch wieder Eigenschaften wie Länge und Breite, Farbe, usw.
Wenn ein Programm gestartet wurde und sein Formular auf dem Bildschirm geöffnet ist, setzt sich das Programm zur Ruhe und wartet nur noch darauf, daß irgend etwas «passiert», daß zum Beispiel in das Formular geklickt wird, Menüpunkte oder Icons angeklickt werden oder ähnliches. Wenn so etwas passiert, nennt man das ein Ereignis. Für jedes Ereignis, das unser Programm interessiert, hat der Programmierer (wir!) in einer Computersprache wie Basic ein Programmstückchen geschrieben, das jedesmal ausgeführt wird, wenn das Ereignis «eintrifft»: eine Ereignis-Prozedur-. Mit dem Wort Prozedur verbindest Du wahrscheinlich bisher eher Dinge wie den Check eines Flugzeugs vor dem Start durch die Piloten oder vielleicht auch das alljährliche Geburtstagskaffeetrinken mit anschließendem Minigolf bei Onkel Alfons. Kurz: Prozeduren sind Vorgänge, die wie nach einer Art Kochrezept immer ähnlich ablaufen. Und ungefähr so ist es auch beim Programmieren: Prozeduren sind Schritt-für-Schritt-Anweisungen für den dummen Computer, der ja nichts anderes kann, als blind viele einfache Befehle zu befolgen - das allerdings sehr schnell.
Wenn also zum Beispiel in einem Malprogramm das Ereignis eintrifft, daß der Benutzer den Menüpunkt «Speichern» angeklickt hat, muß die Ereignisprozedur, die jetzt ausgeführt wird, aus Befehlen bestehen, die den Computer dazu bringen, das gemalte Bild abzuspeichern.
Ein Visual-Basic-Programm, auch Projekt genannt, besteht also aus mindestens einem Formular (mit bestimmten Eigenschaften), den Objekten (mit deren Eigenschaften) und aus mehreren Ereignisprozeduren für die verschiedenen Funktionen des Programms. Man erstellt mit Visual Basic Programme, indem man zuerst ein Formular mit verschiedenen Objekten darauf entwirft und dann für die einzelnen Objekte die Ereignisprozeduren schreibt, die das Fenster «zum Leben erwecken». Das ist das eigentliche «Programmieren».
Um sein Programm zu starten, zu unterbrechen oder zu beenden,
kann man entweder das Menü «Ausführen» benutzen
oder die drei Icons oben am Bildschirm, die aussehen wie auf einem
Kassettenrecorder. Man kann ein Programm jederzeit stoppen, indem
man die Tasten Strg und Untbr gleichzeitig drückt.
Das gleiche bewirkt man mit dem «Pause»-Icon, aber das
funktioniert nur, solange das Programm gerade auf ein Ereignis
wartet. In beiden Fällen kann man jedenfalls danach mit dem
«Start»-Icon an der gleichen Stelle im Programm weitermachen.
Wenn man ein Programm allerdings so unterbrochen hat, kann man
es nur begrenzt ändern: man kann zwar die Prozeduren - also
den in der Programmiersprache Basic geschriebenen "Code"
- umschreiben, aber nicht an den verschiedenen Objekten herumspielen
oder Eigenschaften verändern: dazu muß man das Programm
mit dem dritten Icon, dem "Stop-Knopf" beenden. Ob man
sein Programm gerade gestartet, unterbrochen oder beendet hat,
kann man ganz oben auf dem Bildschirm in der Titelzeile sehen:
Hinter «Visual Basic» steht dort in eckigen Klammern
entweder «ausführen», wenn das Programm
gerade läuft, «unterbrechen», wenn das Programm
unterbrochen, aber noch nicht endgültig gestoppt ist, oder
«entwerfen», wenn das Programm beendet (oder
nie gestartet) wurde. Nur wenn «entwerfen»
in der Titelzeile steht (man sagt auch, Visual Basic ist im «Entwurfsmodus»),
kann man Objekte und ihre Eigenschaften verändern.
Um sein mühsam erstelltes Projekt vor dem traurigen Tod beim Ausschalten des Computers zu bewahren, muß man es vorher auf Festplatte oder Diskette speichern. Speichern kann man Projekte, indem man im «Datei»-Menü den Punkt «Projekt speichern» wählt. Wenn man stattdessen den Menüpunkt «Projekt speichern unter...» wählt, kann man dem Projekt vorher noch einen neuen Namen geben. Interessant zu wissen ist noch, daß Visual Basic ein Projekt nicht in eine einzige Datei speichert, sondern mindestens zwei Dateien anlegt: eine «Form»-Datei für das Formular, deren Name auf .frm endet, und eine «Projekt»-Datei für das Gesamtprojekt, deren Name auf .mak endet und die nur ein bißchen Verwaltungskram enthält. Für beide darf/muß man sich Namen ausdenken, die nur höchstens acht Buchstaben haben dürfen. Vorsicht: Wenn man statt "Projekt speichern" den Menüpunkt "Datei speichern" benutzt, wird nur die .frm-Datei gespeichert, und man kann das Programm dann manchmal nicht mehr laden. Also bitte nur "Projekt speichern..." benutzen, außer wenn man genau weiß, was man tut!
Wenn man das Projekt beim nächsten Mal wieder laden will, wählt man den Menüpunkt «Datei/Projekt öffnen...», sucht im Fenster, das daraufhin erscheint, den Namen seines Projektes heraus und klickt ihn an. Wenn man dann «OK» klickt, wird das Projekt geladen. Mehr Infos zu Dateien, Laufwerken und diesem Fenster gibt's im Anhang A.
Das Form(ular)-Fenster ist die
Vorlage für das spätere Programmfenster: hier entwirft
man die «Benutzeroberfläche» seines Programms.
Man kann das Form-Fenster auf dem Bildschirm herumschieben, verkleinern
und vergrößern, seine Eigenschaften im Eigenschaftenfenster
ändern, Objekte von der Objektsammlung darauf anordnen und
im Editorfenster Ereignisprozeduren dafür schreiben. Das
Formular selbst gilt übrigens auch als Objekt, sozusagen
als Ober-Objekt. Eines der Objekte ist immer das «aktuelle
Objekt», und dessen Eigenschaften
werden im Eigenschaftenfenster aufgelistet. Wenn man ein Objekt
anklickt, wird es zum aktuellen Objekt. Man erkennt das meist
daran, daß es umrahmt oder sonst irgendwie markiert ist.
Hier werden die Eigenschaften
des aktuellen Objekts (s. o.) aufgelistet. Die Eigenschaft, die
blau dargestellt wird, kann oben in der Zeile geändert werden.
Manchmal muß man den Eintrag selber eingeben, manchmal kann
man aus einer Liste wählen, die man mit dem Icon rechts im
Eingabefeld anzeigen läßt. Mit dem «Haken»-Icon
wird die Änderung in die Liste übernommen, mit dem «Kreuz»-Icon
kann sie rückgängig gemacht werden. So haben Formulare
zum Beispiel eine «Caption»-Eigenschaft
(caption heißt auf deutsch «Titel»), die
bestimmt, was in der Titelzeile
des Formulars steht. Wenn man die entsprechende Zeile im Eigenschaftenfenster
anklickt, kann man oben einen neuen Titel eingeben, und wenn man
danach den Haken anklickt oder die Eingabe-Taste drückt,
ändert sich die Titelzeile des Formfensters und es erscheint
das, was man eingegeben hat.
(Auch Werkzeugsammlung
genannt): Hier kann man die Objekte aussuchen, die man auf sein
Formular plazieren will: Um zum Beispiel eine Linie in das Fenster
zu zeichnen, klickt man auf das Icon mit der Linie, klickt im
Formular an die Stelle, wo die Linie anfangen soll, und zieht
die Maus bei gedrücktem Knopf dahin, wo das Ende sein soll.
Fertig! Die einzelnen Objekte werden später noch nach und
nach beschrieben.
Im Editorfenster werden
die Ereignisprozeduren geschrieben (und später andere Basic-Programmteile).
Man kann das Editorfenster auch Code-Fenster nennen, denn
Texte in einer Programmiersprache heißen auch «Code».
Das Code-Fenster öffnet sich, wenn man auf das Objekt, für
das man eine Ereignisprozedur schreiben will, doppelklickt, oder
wenn man im Projektfenster auf «Code
anzeigen» klickt. Oben links im Code-Fenster steht das Objekt
und oben links dessen Ereignis, für das man gerade eine Prozedur
schreibt. Man sieht also immer sofort, wann die Befehle, die man
gerade schreibt, ausgeführt werden. Mit der Maus kann man
Text markieren, indem man mit gedrückter
Maustaste darüberstreift. Wenn man mit dem Cursor eine Zeile
verläßt, prüft Visual Basic, ob sie in richtigem
Basic geschrieben und vollständig ist. Wenn nicht, gibt's
gleich eine Fehlermeldung.
Die wichtigsten Tastenfunktionen im Editorfenster:
Strg+C Markierten Text in die Zwischenablage kopieren. Strg+X Markierten Text ausschneiden und in die Zwischenablage legen. Entf Markierten Text löschen und nicht in die Zwischenablage legen. Strg+V Den Inhalt der Zwischenablage an der Cursorposition einfügen. Strg+Z Die letzte Aktion in der Zeile rückgängig machen. Strg+N Eine leere Zeile oberhalb der aktiven Zeile einfügen. Strg+Y Cursorzeile ausschneiden und in die Zwischenablage übertragen. Bild-Nach-Unten Seitenweise durch alle ProzedurenProzedurdurch alle blättern weiterblättern. Bild-Nach-Oben Seitenweise durch alle Prozeduren zurückblättern. F2 Liste der Prozeduren des Projekts anzeigen Prozeduralle anzeigen F5 Projekt ausführen (oder fortsetzen, falls unterbrochen).
(sprich: Diebag) Das Debug-Fenster ist eigentlich als Hilfe bei der Suche nach Fehlern (Computerslang: bugs) im Programm gedacht. Es eignet sich aber auch sehr gut, um mal schnell einzelne Basic-Befehle auszuprobieren. Dieses Fenster erscheint jedesmal, wenn man sein Programm startet, rechts unten auf dem Bildschirm. Wenn man sein Programm unterbricht (Visual Basic ist dann im Unterbrechungsmodus, s.o.), wird dieses Fenster von Visual Basic nach vorne geholt, und es erscheint ein Cursor darauf. Hier kann man dann direkt Basic-Programmzeilen eingeben, und wenn man die Return-Taste drückt, wird diese Befehlszeile sofort ausgeführt! Der Print-Befehl (siehe unten) schreibt in diesem Falle übrigens nicht ins Formular, sondern direkt unter die Befehlszeile ins Debug-Fenster, was auch sehr praktisch ist.
Wenn man die Farbe irgendeines Objekts verändern will, doppelklickt man normalerweise auf die entsprechende Farb-Eigenschaft im Eigenschaftenfenster, und es erscheint eine «Farbpalette» mit Standardfarben, aus denen man eine aussucht. Wenn Dir die dort angebotenen Farben nicht gefallen, und Du ein blaueres Grün oder ein gelberes Rot brauchst, kannst Du mit Hilfe des eigentlichen Farbpalettenfensters ähnlich wie auf einer Malerpalette eigene Farben «mischen». Auf den Bildschirm bringt man dieses Fenster, indem man den Menüpunkt «Fenster/Farbpalette» wählt. Wie man am Computer Farben mischt, werde ich hier nicht erklären; laß' es Dir von Deinem Kursleiter zeigen, es ist nicht schwer.
Dieses Fenster braucht man fast nur, wenn man kompliziertere Programme schreibt, die zum Beispiel aus mehreren Formularen bestehen. Dann kann man mit diesem Fenster zwischen den einzelnen Formularen umschalten. Wir werden das Fenster noch nicht verwenden. Nur eins: Wenn das Form-Fenster einmal nicht zu sehen ist, kann man im Projekt-Fenster auf die Schaltfläche "Form anzeigen" klicken, und es erscheint wieder.
Prozeduren beginnen in Basic mit dem Befehl Sub, gefolgt vom Namen der Prozedur und (), und sie enden mit End Sub. (engl. subroutine: Unter-Programm) Dazwischen stehen die Befehle, die zur Prozedur gehören. Sie werden, wenn die Prozedur ausgeführt wird, einfach nacheinander «befolgt».
Die meisten Prozeduren sind Ereignisprozeduren: für jedes Ereignis, auf das das Programm reagieren soll, muß man eine Ereignisprozedur schreiben. Dabei werden Sub, der Prozedurname, () und End Sub schon von Visual Basic vorgegeben.
(engl. load: laden) Die Ereignisprozedur Form_Load wird jedesmal beim Start des Programms ausgeführt, bevor das Formular auf den Bildschirm gebracht wird. Es ist deshalb zwecklos, in dieser Prozedur schon etwas in das Fenster schreiben oder malen zu wollen (mit Print o.ä.), denn das wird einfach nicht gemacht. Das Fenster ist halt noch nicht da!
Ein Click-Ereignis tritt auf, wenn mit der linken Maustaste auf ein Objekt geklickt wurde. Wenn der Benutzer auf ein Steuerelement im Formular geklickt hat, wird die Click-Ereignisprozedur dieses Objekts aufgerufen. Klickt man in den "Hintergrund" der Form, gibt es ein Form_Click-Ereignis, das eine eigene Ereignisprozedur haben kann.
Dieses Ereignis tritt auf, wenn mit der Maus zweimal kurz hintereinander in ein Objekt geklickt wurde. Vorsicht: beim ersten der beiden Mausklicks tritt trotzdem außerdem noch ein Click-Ereignis ein, beim zweiten dann nicht mehr!
(engl. print: drucken) Mit dem Print-Befehl kann man von einer Prozedur aus Texte in das Formular schreiben. Der Text muß dabei in Anführungszeichen (") stehen. Beispiel:
Print "Hallo, Du da vorm Bildschirm!"
schreibt ins Formular:
Hallo, Du da vorm Bildschirm!
Den Print-Befehl kann man auch zum Rechnen verwenden:
Print "413 + 512 sind genau" Print 413 + 512
ergibt im Formular:
413 + 512 sind genau
925
Alles, was hinter dem Print-Befehl zwischen zwei Anführungszeichen steht, wird beim Ausführen vom Computer Buchstabe für Buchstabe, Zahl für Zahl und Zeichen für Zeichen genauso «abgeschrieben». Was hinter dem Print-Befehl dagegen ohne Anführungszeichen steht, muß in der Programmiersprache Basic geschrieben sein und wird vom Computer «übersetzt»: so ist zum Beispiel 413 + 512 Basic und bedeutet für den Computer «das Ergebnis von 413 plus 512». Und dieses Ergebnis soll nun, das sagt der Print-Befehl, im Fenster ausgegeben werden. Deshalb steht dort dann «925».
Mit dem Print-Befehl kann man auch Werte von Eigenschaften oder Variablenwerte (s.u.) ausgeben:
Print Form1.Caption
schreibt genau das ins Form-Fenster, was auch in seiner Titelzeile steht, denn Form1.Caption ist Basic und bedeutet für den Computer: «die Caption-Eigenschaft des Formulars mit dem Namen Form1». Und was kommt wohl bei dem Befehl Print "Form1.Caption" heraus?
Noch drei Infos zum Print-Befehl:
1. Malnehmen und Teilen tut man in Basic mit dem Stern * und dem Schrägstrich /. Außerdem kennt der Computer auch Dezimalbrüche, allerdings muß man in Basic statt des Kommas einen Punkt verwenden, wie in England und den USA üblich.
Print 8 / 2 Print 3 * 2.5
ergibt
4
7,5
Im Ergebnis, das ausgegeben wird, wird die Zahl 7,5 dann übrigens doch mit Komma geschrieben! Nur im Basic-Code selbst muß man den Punkt verwenden.
2. Wenn man mehrere Sachen in einer Zeile im Fenster ausgeben will, schreibt man in der Print-Befehlszeile Strichpunkte (= Semikolons = ; ; ;) dazwischen:
Print "1 + 1 sind immer noch "; 1 + 1; Print ", und drei mal null ist "; 3 * 0
ergibt:
1 + 1 sind immer noch 2, und drei mal null ist 0
3. Wenn man Text einrücken möchte, kann man nach Print die Tab(...)-Anweisung verwenden. Der Text wird um so viele Leerzeichen eingerückt, wie es in der Klammer hinter dem Tab steht:
Print Tab(10) "Eins steht fest: Der Ball ist rund!" Print Tab(10) "Huhu!"; Tab(30) "Prfffz!"
ergibt:
Eins steht fest: Der Ball ist rund!
Huhu! Prfffz!
Zwischen «Huhu!» und linkem Rand sind 10 Leerzeichen Platz, zwischen «Prfffz!» und linkem Rand (!) sind 30 Leerzeichen Platz. Vorsicht: die Zeichen auf dem Bildschirm sind unterschiedlich breit; ein W ist breiter als ein i. Deshalb passen zwischen die Position 10 und Position 30 nicht unbedingt 20 Buchstaben!
Mit diesen Grafikbefehlen kann man richtig nette Grafiken in seine Formulare zeichnen. Um dem Computer dabei in Zahlen sagen zu können, wohin er denn zeichnen soll, benutzt man Koordinaten. Den Umgang mit Koordinaten lernt Ihr im Kurs.
Abstände auf dem Bildschirm, wie es Koordinaten ja sind, werden in Visual Basic nicht in Zentimetern gemessen, sondern in einer speziellen Maßeinheit namens «Twips ». Ein Twip ist ein sehr kleiner Abstand: schau Dir einmal die vielen Rasterpunkte, die im Entwurfsmodus auf das Formular gezeichnet sind, an. Der Abstand zwischen zwei Rasterpunkten. die nebeneinander liegen, sind 120 Twips!
Um nun also eine Linie zu ziehen, muß man ihren Anfangs- und Endpunkt in Koordinaten angeben. Beispiel:
Line (1000,1500)-(5000,1500)
Anfangspunkt Endpunkt
Mit diesem Befehl wird eine horizontale Linie gezogen, denn Anfangs- und Endpunkt haben den gleichen Abstand zum oberen Rand des Fensters (1500 Twips). Der Anfang der Linie ist 1000 Twips vom linken Rand entfernt, das Ende der Linie hingegen 5000 Twips. Also ist die Linie 4000 Twips lang.
Wenn man will, kann man noch die Farbe angeben, in der gezeichnet werden soll (Normalerweise schwarz). Dazu muß man allerdings wissen, wie Windows mit Farben umgeht: im Computer gibt es für jede Farbe, die der Computer kennt, einfach eine Zahl, denn Zahlen kann der Computer ja bekanntlich besonders gut verarbeiten. Für uns ist es aber weniger leicht zu verstehen, daß ein helles Schokobraun der Zahl 8887245 entspricht, deswegen gibt es in Basic ein Zwischending: die RGB-Funktion. Mit der erklärt man dem Computer, wie er ein Farbe «mischen» soll. Bei Fernsehern und Computermonitoren ist nämlich jede Farbe eine Mischung aus einem Rot-, einem Grün- und einem Blauanteil. In jeder Farbe ist unterschiedlich viel von jedem Anteil enthalten. Allerdings funktioniert dieses Mischen nicht genau wie beim Tuschkasten: wenn man zum Beispiel von rot, grün und blau gleichviel mischt, kommt bei dieser Mischmethode ein Grau dabei heraus.
Line (1000,1500)-(5000,3000), RGB(255,0,0)
zeichnet eine rote diagonale Linie. Die Farbe wird mit der RGB-Funktion beschrieben, indem man einzeln den Rot-, Grün- und Blauanteil der Farbe angibt (jeweils Zahlen zwischen 0 und 255). Auf diese Weise kann man alle Farben zusammensetzen. Laß Dir im Kurs zeigen, wie das geht. Am besten lernt man es mit dem Farbpalettenfenster.
Wichtige Farben:
R(ot) G(rün) B(lau) R G B schwarz 0 0 0 gelb 255 255 0 weiß 255 255 255 violett 255 0 255 rot 255 0 0 braun 205 155 135 grün 0 255 0 orange 255 128 0 blau 0 0 255 grau 128 128 128
Die Farbe orange heißt in Basic also RGB(255,128,0).
Wenn man ein Rechteck zeichnen möchte, reicht dazu ein einziger Line-Befehl, indem man statt Anfangs- und Endpunkt einer Linie den oberen linken und den unteren rechten Eckpunkt eines Rechteckes angibt, und hinter die Farbe dann noch ein «,B» setzt (B, weil Rechteck auf englisch box heißt) :
Line (1000,1500)-(5000,3000),RGB(255,0,0),B
zeichnet statt einer Linie ein ganzes Rechteck aus roten Linien. Man kann auch noch ein F an das B anhängen, dann wird das Rechteck innen ausgemalt (gefüllt). Wenn man keine Farbe angeben will, muß man übrigens trotzdem beide Kommas hinschreiben: mit dem Befehl
Line (1000,1500)-(5000,3000),,BF
zeichnet man ein schwarzes, gefülltes Rechteck. Beachte die beiden Kommas hintereinander, zwischen denen sonst die Farbe stünde!
Kreise kann der Computer natürlich auch! Dazu gibt es den Circle-Befehl. Man muß natürlich dazu sagen, wohin der Kreis soll, und wie groß er werden soll. Dazu beschreibt man zuerst mit Koordinaten den Mittelpunkt des Kreises, und gibt dann die Größe des Kreises, also seinen Radius, in Twips an. Außerdem kann man noch die Farbe des Kreises bestimmen.
Circle (3000,4000),2000,RGB(0,190,0)
zeichnet einen dunkelgrünen Kreis mit dem Radius 2000 Twips um den Punkt mit den Koordinaten (3000,4000).
Einzelne Punkte