Visual Basic PDF
Visual Basic PDF
4
KnowWare SPECIAL
4,-
utschlan
d
2. aktualisierte Ausgabe 88 Seiten
De
Visual Basic
Peter Hatje
4*qltpk #- v- b* ÊÀËÄ
[Link]
Deutschland: 4,- EUR Österreich: 4,60 EUR
Schweiz: 8 SFR Luxemburg: 4,70 EUR Italien: 5,50 EUR
Acrobat Reader - Bestellung - Autoren gesucht
Navigation
Pfeil Links/Rechts: eine Seite vor/zurück
Alt+ Pfeil Links/Rechts: Wie im Browser: Vorwärts/Zurück
Strg++ vergrößert und Strg+– verkleinert
Autoren gesucht
Der KnowWare-Verlag sucht ständig neue Autoren. Hast du ein Thema,
daß dir unter den Fingern brennt? - ein Thema, das du anderen Leuten
leicht verständlich erklären kannst?
Schicke uns einfach ein paar Beispielseiten und ein vorläufiges
Inhaltsverzeichnis an folgende Adresse:
lektorat@[Link]
Wir werden uns deinen Vorschlag ansehen und dir so schnell wie
möglich eine Antwort senden.
[Link]
Inhalt 3
Vorbemerkung
Du hast dich entschieden, eigene Programme Dieses Vorurteil gegenüber Basic wird heute
schreiben zu wollen? Ich finde das gut. Du immer noch gepflegt, auch wenn heimlich große
befindest dich damit in einer guten Tradition, Teile von Anwendungen nach dem Visual Basic
denn es ist noch nicht allzu lange her (allerdings – Prinzip entwickelt werden.
bei dem Tempo, dass die Computerentwicklung Die Umgebung um den Heimcomputer C64
vorlegt, sind es Jahrhunderte), dass Amateure – entwickelte sich zu einer richtigen Szene. Es gab
und da vornehmlich Jugendliche und auch eine 'hauseigene' Zeitschrift, es gab jede Menge
Kinder – auf Teufel komm raus programmierten. Zubehör in jedem Kaufhaus (bis hin zu
Es war die Zeit des Commodore 64, kurz C64 Schnittstellen für Robotermodelle aus dem
genannt. Er stand in fast jedem Kinderzimmer, Spielwarenbereich), es gab Spiele in Hülle und
hatte eine weltweite Verbreitung und müsste sich Fülle und es gab junge Leute, die ihre
vor heutigen PCs im Prinzip nicht verstecken. Programme der Öffentlichkeit zur Verfügung
Alles, was PCs heute leisten, konnte der C64 stellten. Das war so etwas wie die heutige
auch – natürlich sehr viel langsamer. Und in Shareware-Szene, allerdings öffentlicher.
seinen Arbeitsspeicher würde nicht einmal ein Programmlistings waren jedem zugänglich und
heutiger Maustreiber passen. Programmierkniffe und –tricks wurden jedem
Er hatte aber einen großen Vorteil: er war billig zugänglich gemacht. Sehr demokratisch, das
und nach dem Einschalten (Hochbooten gab es Ganze.
nicht) stand sofort die Programmiermöglichkeit Dann kam der PC; die Firma Commodore
in Basic (Beginners Allpurpose Symbolic verschlief die Entwicklung, der C64 verschwand
Instruction Code) zur Verfügung. Das wurde von und merkwürdigerweise endete damit auch das
den Besitzern kräftig benutzt. private Programmieren.
Es gibt eine ganze Reihe von Heute haben wir Programmiermöglichkeiten, von
Programmiersprachen. Für jeden besonderen denen man damals nur träumen konnte und daher
Zweck wurde eine andere entwickelt. ist es umso unverständlicher, dass sich keine
Grundsätzlich haben aber alle dieselbe Aufgabe: neuen Fan-Clubs bilden.
sie sollen es dem Menschen ermöglichen, sich
einer Maschine verständlich zu machen. Auch Vielleicht gelingt das ja über diesen Weg.
wenn es manchmal nicht so aussieht: ein Manuskript und Programme sind mit
Computer ist dumm. Die Maschine führt brav Jugendlichen durchgearbeitet worden. Dabei
und zuverlässig Programme aus, die in einer wurde die Bandbreite von kompletter
Form geschrieben sind, die beide, Mensch und Unkenntnis, auch mit Windows, bis zu einigen
Computer, verstehen. Erfahrungen mit Basic berücksichtigt. Daher
Basic hat den Vorteil, dass es leicht zu erlernen werden einige Leser das Eine oder Andere als zu
ist, verhältnismäßig unkompliziert aufgebaut ist ausführlich beschrieben betrachten, andere
und trotzdem zu ganz passablen Ergebnissen vielleicht noch mehr Grundkenntnisse benötigen.
führt.
Ich bin ein Opfer der neuen Rechtschreibung, will
Gerade diese Vorzüge ließen Profis die Nase sagen, ich muss ganz neu lernen. Ich hoffe, es
rümpfen. Wenn Schüler programmieren konnten, wird mir verziehen, wenn noch nicht alles
wurde an ihrem Image der geheimnisumwitterten einwandfrei richtig ist.
Kenner von Computern gekratzt. Folglich wurde
Basic madig gemacht. Man muss allerdings
zugeben, dass irrsinnig viel Schrott programmiert
wurde.
Das Programm
Visual Basic ist ein umfassendes System zur nicht im 1. Schuljahr das Lösen von
Entwicklung von Anwendungen unter Windows. quadratischen Gleichungen beigebracht.
Es gibt verschiedene Ausgaben oder Editionen Visual Basic entwickelt sich immer weiter und
und verschiedene Entwicklungen oder lässt kaum Lösungsmöglichkeiten aus. Mit hoch
Versionen. Derzeit liegt die Version Visual Basic spezialisierten Programmiersprachen, die
6.0 vor. Eine Edition wäre z.B. die Visual Basic beispielsweise für komplexe Grafikoperationen
Learning Edition von Visual Basic 6.0. Darauf eingesetzt werden, kann Visual Basic natürlich
aufbauend gibt es die Professional Edition. nicht konkurrieren, für alltägliche
Erwerb Grafiklösungen reicht es aber allemal – wie wir
Die Learning Edition liegt einem Buch über sehen werden.
Visual Basic 6.0 bei. Zitat aus der Readme-Datei: Installation
Hast du deine Version von Visual Basic
Das Verzeichnis \VB6 enthält die Ablaufmodell- erworben, muss das Programm auf der Festplatte
Edition von Visual Basic 6. Diese Visual Basic-
installiert werden. Zunächst solltest du dir
Edition ist gegenüber anderen Visual Basic-
überlegen, in welchem Verzeichnis du Visual
Editionen in folgenden Punkten eingeschränkt:
Basic installieren willst. Da ich nicht weiß, wie
Sie können keine ausführbaren Dateien (.exe) du deine Dateiordner organisiert hast, schlage ich
erstellen. vor, die Vorgaben des Installationsprogramms zu
übernehmen und das Programm aus dem
Sie können die meisten Beispiele des Buches Startmenü heraus zu starten.
nachvollziehen, die Programmierung von
ActiveX-Steuerelementen ist allerdings nicht Wer sich gut mit Windows auskennt, kann sich
möglich. ja einen eigenen Ordner für Visual Basic
anlegen, wobei die Pfade möglichst kurz
Sie erhalten keinen Support. gehalten werden sollten, damit später beim
Es gibt keine Online-Hilfe. Einsetzen von Pfaden keine ellenlangen
Dateinamen eingesetzt werden müssen.
Auf vielen CDs von Computerzeitschriften findet Du startest die Installation, indem du die CD
man eine kostenlose CCE-Version von Visual einlegst, START | AUSFÜHREN | DURCHSUCHEN
Basic 5.0. Sie ist allerdings in Englisch. Zudem wählst und im CD-Laufwerk VB6\[Link]
kann man durch Stöbern von Zeitschriften-CDs aktivierst. Durchweg kannst du einfach auf
eine Version 4.0 finden und installieren. Schüler WEITER klicken, die Lizenzbedingungen
und Studenten können sich kostengünstig Lern- bestätigen und den gewünschten Pfad
Editionen besorgen. Die Beschaffung ist zwar übernehmen oder einen eigenen anlegen.
etwas umständlich, aber die Vertreiber von Zwischendrin wird der Rechner einmal neu
Software helfen sicherlich gerne weiter. gestartet, wobei du die CD nicht aus dem
Kostengründe können es also nicht sein, wenn Laufwerk entfernen darfst.
Visual Basic nicht eingesetzt wird.
Schließlich erscheint die Meldung, dass die
Dieses Heft ist so aufgebaut, dass ab Version 4.0 Installation erfolgreich abgeschlossen wurde.
alle Programme entwickelt werden können. Auf
die Einschränkungen der Billig-Ausgaben wird Im Verlauf dieses Heftes werden verschiedene
Rücksicht genommen. Alle Einschränkungen Programme entwickelt, die irgendwo gespeichert
haben für Anfänger keine Bedeutung. Auch werden müssen. Daher solltest du dir wegen der
wenn davon geträumt wird, eine Internet- besseren Übersichtlichkeit einen Ordner anlegen,
Anbindung zu programmieren, müssen zunächst in dem du die Dateien speicherst. Da das
einmal grundlegende Kenntnisse für den Alltag Register VORHANDEN im Startdialog des
vorhanden sein. In der Schule wird einem auch Programms als Standard auf den Ordner VB98
verweist, passt hier ein Ordner PROGRAMME hin.
Starten
Inmitten von vielen Fenstern wartet das
Dialogfeld zur Auswahl der Projekte auf dich.
Vorgewählt ist STANDARD-EXE im Register
NEU. Außerdem gibt es die Register
VORHANDEN und AKTUELL. Im Register
VORHANDEN werden Verzeichnisse geöffnet, in
denen sich Projekte befinden; im Register
AKTUELL sind alle schon einmal geöffneten
Programme abgelegt. Hier findest du deine neu
entwickelten Programme wieder, nachdem du sie
Visual Basic kann auf unterschiedliche Weise gespeichert hast.
gestartet werden. Der üblichste Weg ist wohl: Bei dir sieht die Sache vermutlich so ähnlich aus
STARTMENÜ | PROGRAMME | MICROSOFT VI- wie in der nebenstehenden Abbildung. Hier
SUAL BASIC 6.0 | MICROSOFT VISUAL BASIC 6.0. markierst du [Link] und wählst
ÖFFNEN, worauf das Programm loslegt.
Einrichten
Jetzt hast du Visual Basic in aller Pracht vor dir. Fenster – und das brauchen wir ständig. Also
Als erstes solltest du das PROJEKT-Fenster sollten wir es auch unbedingt etwas breiter
verkleinern, indem du mit der Maus an den machen. Das FORMULAR-LAYOUT-Fenster
unteren Rand fährst (der Mauszeiger ändert seine dagegen klickst du weg – das brauchen wir
Form) und den Fensterrand nach oben ziehst; vorläufig nicht.
dadurch vergrößert sich das EIGENSCHAFTEN-
Die FORM ist die Bedienoberfläche des späteren einen Start- und einen Endpunkt, eine bestimmte
Programms. Je nach den Bedürfnissen kann seine Dicke, unterschiedliche Farben. Ein Kreis hat
Größe einfach verändert werden, indem du die einen bestimmten Radius, kann mit Farben oder
sogenannten ANFASSER, also die kleinen Mustern ausgefüllt sein usw.
Kästchen an der FORM, mit der Maus greifst, d.h. Diese und andere Eigenschaften findest du im
anklickst und dann bei gehaltener Maustaste an EIGENSCHAFTEN-Fenster. Oben im Fenster siehst
ihnen ziehst, wodurch sich die FORM vergrößert du die Objektliste, in der im Moment nur die
bzw. verkleinert. Die FORM ist im FORMULAR- Form zu finden ist. Darunter sind zwei Register,
DESIGNER-Fenster angelegt – dessen Titelleiste in denen du nach Geschmack die Anzeige der
zeigt also ganz logisch den Namen PROJEKT1 – Eigenschaften einstellen kannst. Die linke Spalte
FORM1 (FORM) an. führt die EIGENSCHAFTEN auf (leider nur in
Es gibt noch eine ganze Reihe individueller Englisch) und die rechte Spalte die
Einstellmöglichkeiten, die du vornehmlich unter dazugehörigen WERTE. Diese Werte können
EXTRAS | OPTIONEN findest. direkt im Eigenschaften-Fenster verändert
werden.
Beschreibung
1. Du klickst auf BACKCOLOR, also auf die
Sehen wir uns nun die einzelnen Fenster an – mit Hintergrundfarbe,
ihrer Hilfe gestaltet du das Programm, das du
entwickeln möchtest. 2. ... dann auf den Pfeil in der Werteliste,
Projekt-Fenster 3. ... dann auf PALETTE
Im PROJEKT-FENSTER werden alle Zutaten zu 4. ... und endlich auf eine Farbe
einem Projekt gesammelt. Dazu gehört Visual Basic führt die Veränderungen jeweils
standardmäßig eine Form. Es können noch sofort aus – fertig!
andere Formen oder Module dazukommen. 5. Nun wählst du AUSFÜHREN | STARTEN oder
In der Symbolleiste des Projekt-Fensters gibt es drückst F5 bzw. die entsprechende
drei Schaltflächen: Schaltfläche in der Symbolleiste.
CODE ANZEIGEN,
OBJEKT ANZEIGEN, Fährst du mit dem Mauszeiger über eine
ORDNER WECHSELN. Schaltfläche, erscheint nach einem kurzen
Augenblick ein sogenannter Tooltip.
Über diese Schaltflächen kannst du vom Objekt
(das ist hier die Form mit dem Namen FORM1) Was du jetzt siehst, ist die Bedienoberfläche
zum CODE-Fenster wechseln. Das Code-Fenster während der Laufzeit, d.h. das Programm
zeigt dir natürlich noch nichts an, denn wir haben läuft jetzt. Arbeitest du an der
ja noch keinen Code. Genaueres über das Cofe- Bedienoberfläche, bist du also in der
Fenster erfährst du auf Seite 14. Entwicklungsphase.
6. Du aktivierst AUSFÜHREN | BEENDEN bzw.
Den Begriff Code kennst du sicher. Damit wird
meistens Geheimschrift oder auch Chiffre drückst auf die SCHLIEßEN-Schaltfläche der
verbunden. So ähnlich sieht der Code für Visual Form oder die entsprechende Schaltfläche in
Basic auch für einen Laien aus. Dieses Heft soll der Symbolleiste.
dafür sorgen, dass Visual Basic-Code für dich Mit der dritten Schaltfläche in diesem
keine Geheimschrift mehr ist. Zusammenhang kannst du den Programmablauf
unterbrechen, um Überprüfungen des Programms
Eigenschaften-Fenster vorzunehmen.
Menschen gibt es in vielen Formen: groß oder Die einzelnen Eigenschaften werden im Laufe
klein, dick oder dünn, mit verschiedenen Namen der Programmentwicklung besprochen. Im
usw. All das sind Eigenschaften. Jedes Objekt in übrigen ist unter dem EIGENSCHAFTEN-Fenster
Visual Basic hat natürlich auch seine eine Kurzbeschreibung zu sehen, ansonsten gilt:
Eigenschaften, wobei eine Linie weniger Lernen durch Ausprobieren.
Eigenschaften hat als ein Kreis. Eine Linie hat
In der offiziellen Version von Visual Basic 6 gibt Hier folgt nun eine Liste der Eigenschaften:
es die Möglichkeit, eine sogenannte EXE-Datei Eigenschaft Beschreibung
zu erstellen. Wenn du genau hinsiehst, kannst du
NAME Name der Form
im Datei-Menü ein abgeblendetes Menü namens
PROJEKT1-EXE ERSTELLEN erkennen. Damit BORDERSTYLE Rahmentyp der Form
wird ein ausführbares Programm entwickelt, dass BACKCOLOR Hintergrundfarbe
du auch auf Rechnern ausführen kannst, auf
denen kein Visual Basic installiert ist. Diese FORECOLOR Schriftfarbe
Möglichkeit ist auf dieser Testversion leider nicht CONTROLBOX Systemmenüfeld (in der
vorhanden. Titelleiste links),
Die Form ist in das FORMULAR-DESIGNER- sichtbar, unsichtbar.
Fenster eingebettet. In der Titelleiste der Form FONT Schriftarten in
siehst du die Beschriftung (Caption) der Form. Formularen.
Die änderst du, indem du im Eigenschaften- ICON Legt das Symbol fest,
Fenster die Eigenschaft Caption wählst und einen das angezeigt wird,
anderen Wert eingibst. Etwas verwirrend ist, dass wenn das Formulars
die Form auch den Namen Form1 hat. Das minimiert wird.
kannst du im Eigenschaften-Fenster bei der
Eigenschaft Name sehen. Den namen kannst du MAXBUTTON Legt fest, ob die
natürlich ändern. Unter diesem namen wird die Schaltfläche
Form im Programm angesprochen. Maximieren beim
Programmablauf
Wie du siehst, übernimmt Visual Basic deine angezeigt wird oder
Eingaben sofort in die Titelleiste der Form. Hier nicht.
siehst du also auch, wie einfach es ist,
Eigenschaften zu benutzen: du musst nur in der MINBUTTON Legt fest, ob die
Eigenschaftenliste eine Eigenschaft auswählen Schaltfläche Minimieren
und in der Werteliste einen neuen Wert beim Programmablauf
eintragen. angezeigt wird oder
nicht.
Die Eigenschaft CAPTION gibt es für die meisten
Steuerelemente. Übersetzt heißt das in etwa STARTUPPOSITION Legt die Position des
Überschrift, Beschriftung. Formulars fest.
Die Form hat ein Punkteraster, das während der WINDOWSTATE Legt fest, ob das
Laufzeit verschwindet. Es ist nur dazu da, die Formular maximiert,
Anordnung der Steuerelemente ziemlich genau minimiert oder normal
vornehmen zu können. angezeigt wird.
Basic
Es gibt Konzepte, die in jedem Basic-Dialekt Sehm wir uns das obige Beispiel genauer an:
gelten, also nicht nur in Visual Basic. Einige 1. Satz = "Hallo Welt!"
davon sollen an dieser Stelle besprochen werden. 2. Print Satz
Code In Zeile 1 legst du den Wert "Hallo Welt!"
in ein Schubfach mit dem Namen Satz. In Zeile
Ein Code besteht zu einem großen Teil aus
2 gibst du folgende Anweisung: Schreibe den
Anweisungen, die man auch Befehle nennt. Der
Inhalt des Schubfaches 'Satz' oder auf
Computer wird angewiesen, bestimmte Aktionen
computerisch: schreibe die Variable 'Satz'.
vorzunehmen. Anweisungen werden nacheinan-
Änderst du den Inhalt, wird der alte Inhalt
der ausgeführt. Das üblichste Beispiel ist immer
schlicht überschrieben.
wieder die Anweisung Print "Hallo
Welt!", die dazu führt, dass der Computer 1. Satz = "Hallo Welt!"
2. Print Satz
'Hallo Welt' auf die Form schreibt. Print ist der
3. Satz = "Guten Tag, schöne
Befehl., "Hallo Welt!" ein Argument. Der
Welt!"
Computer 'versteht' den Code aber nur, wenn er 4. Print Satz
ohne Fehler ist – jeder Schreibfehler wird miss-
Der Computer würde jetzt beide Inhalte
verstanden. Deshalb muss man bei den Anwei-
untereinander auf den Bildschirm schreiben. Wie
sungen genau aufpassen. Das Argument, eine
das gemacht wird, dazu kommen wir später.
Variable, kann so fehlerhaft sein wie es will.
Alles, was innerhalb der Anführungszeichen Für fast jeden Zweck gibt es unterschiedliche
steht, wird genauso wiedergegeben, also auch Variablentypen. Damit wird auf den jeweiligen
mit sämtlichen Schreibfehlern. Zum Glück hilft Inhalt einer Variablen Rücksicht genommen. Es
Visual Basic nach Kräften, Fehler zu vermeiden. ist nicht egal, ob der Inhalt, bzw. der Wert einer
Variablen eine Zahl, ein Wort oder ein
Variablen Geldbetrag ist. Die Unterschiede hängen
Jede Programmiersprache lebt von der Vielfalt vornehmlich mit dem Speicherbedarf und damit
der möglichen Variablen. Eine Variable ist ein mit der Rechengeschwindigkeit zusammen.
Wert mit veränderlicher Größe, ein Platzhalter, Der Einsatz der Variablen wird jeweils in den
in den Werte eingesetzt werden können – Programmprojekten besprochen.
gewissermaßen ein Schubfach mit einem Namen
in einem Schrank, in das man etwas hineinlegt,
was man dann bei Bedarf wieder herausholt.
Visual Basic
Visual Basic umfasst die Grundlagen von Basic
sowie umfangreiche Neuerungen. Mit dem
klassischen Basic ist Visual Basic überhaupt
nicht mehr zu vergleichen, obwohl im Rahmen
dieses Heftes die Unterschiede noch nicht allzu
deutlich zu erkennen sind. Das klassische Basic
war sozusagen ein Programmwurm, der vorn
anfing und bis zum Ende abgearbeitet wurde.
Visual Basic dagegen ist ereignis- und
objektorientiert und setzt eigentlich die
Anwendung der Maus voraus.
Was heißt objektorientiert? Visual Basic versteht
seine Elemente (Fenster, Schaltflächen, Listen Hier siehst du eine lange Liste mit allen
usw.) als Objekte, die Eigenschaften haben und Ereignissen, die dem Objekt FORM zugeordnet
denen man bestimmte Methoden und Ereignisse sind. Unmittelbar ist das Ereignis LOAD
zuordnen kann. markiert. Markiert werden alle eingesetzten
Was heißt ereignisorientiert? Programme unter Ereignisse. Zum Glück braucht man meist nur
Visual Basic warten auf Ereignisse. Du kannst wenige.
ein Programm starten – und es passiert nichts. Methoden
Klickst du eine Schaltfläche an, geschieht irgend
etwas, aber was, das muss programmiert werden. Methoden sehen den Eigenschaften ähnlich,
bedeuten aber die Anweisungen an ein Objekt,
Eigenschaften sich auf eine bestimmte Weise zu verhalten, z.B.
Eigenschaften wurden schon besprochen. Sie eine bestimmte Position auf der Form
sind so wichtig, dass es dafür ein eigenes Fenster einzunehmen oder einer Liste neue Elemente
gibt. Es gibt aber auch Eigenschaften, die nicht hinzuzufügen.
zur Entwicklungszeit eingestellt werden können,
sondern im Programm aufgebaut werden müssen.
Ereignisse
Jedes Objekt hat unterschiedlich viel
Möglichkeiten, auf Ereignisse zu reagieren. Ein
häufiges Ereignis ist z.B. der Klick mit der Maus
auf eine Schaltfläche. Die möglichen Ereignisse
werden von Visual Basic in einer Liste
dargestellt, die du mit einem Klick auf den
kleinen Pfeil rechts neben LOAD öffnest.
Prozeduren Funktionen
Um all das leisten zu können, sind Visual Basic- In diesem Zusammenhang sind selbstentwickelte
Programme in sogenannte Prozeduren eingeteilt. Funktionen gemeint, nicht die Funktionen, die
Sehen wir uns das an zwei Beispielen an: als Basic-Funktionen bekannt sind – und die wir
Private Sub Form_Load() auf Seite 13 besprachen – wie z.B. die Funktion
(Anweisungen) SIN(WINKEL).
End Sub Über diese mathematische Funktion wird der
Eine Prozedur wird durch das Schlüsselwort Sub Sinus eines Winkels berechnet.
eingeleitet. Das Schlüsselwort Private zeigt Funktionen dieser Art sind in Basic eingebaut.
an, dass diese Prozedur von anderen Prozeduren Wir wollen jetzt aber über Funktionen sprechen,
aufgerufen werden kann. Alles, was zwischen die wie Prozeduren aufgebaut sind, aber einen
Sub und End Sub steht, wird vom Computer Wert an das Programm zurückgeben. Wenn in
abgearbeitet, worauf die Prozedur dann wieder einem Programm immer wieder Mehrwertsteuern
verlassen wird. Die oben genannte Sub verweist berechnet werden, legt man für diesen Zweck
auf das Objekt Form und durch einen Unterstrich eine Funktion an und übergibt dieser die
getrennt auf das Ereignis Load. Alles, was entsprechenden Beträge. Die Funktion gibt den
zwischen der Startzeile und der Endzeile berechneten Betrag zurück.
eingetragen wird, geschieht beim Laden der Private Function
Form, also im allgemeinen, wenn man das MehrwertSteuer(Betrag)
Programm startet. Berechnungen
Private Sub Form_Click() MehrwertSteuer =
(Anweisungen) ErgebnisBerechnungen
End Sub End Function
Wird das Ereignis Click gewählt, kann Code in Selbstentwickelte Funktionen verhalten sich also
die Prozedur geschrieben werden, der ausgeführt im Grunde genauso wie die integrierten
wird, wenn auf die Form geklickt wird. Funktionen. Ein Beispiel für die Verwendung
von Funktionen ist im Anhang auf Seite 55
Der Code innerhalb einer Ereignis-Prozedur ist beschrieben.
durch die beiden Zeilen von allen anderen
Prozeduren abgeschottet. Auch Variablen in
einer Prozedur sind grundsätzlich nur aktiviert,
wenn die Prozedur aufgerufen wird – und ihre
Werte sind wieder verschwunden, wenn die
Prozedur verlassen wird. Daher kann man auch
in Prozeduren die gleichen Variablennamen
verwenden, denn eine Prozedur kennt die andere
nicht.
Form.
HEIGHT Höhe ca. 5200
WIDTH Breite ca. 5800
CAPTION Beschriftung Würfelspiel
26 Als Dateiname gibst du WÜRFELN ein. Die • Zeile 2: Die Variable mit dem Namen ZUFALL
Form wird unter dem Namen WÜRFELN. wird als Variablentyp SINGLE deklariert.
gespeichert – wie du siehst, heißt die
• Zeile 3: Dieser Variablen wird der Wert
Dateiendung für Visual Basic .FRM.
zugewiesen, der sich aus der Funktion Rnd
ergibt. Diese Funktion liefert einen Wert
Während der Arbeit an einem Projekt sind
Pannen unvermeidlich – sei es, dass der zwischen 0 und 0,999999 und weist ihn der
Computer abstürzt, sei es, dass er sich nur Variablen ZUFALL zu..
aufhängt. So etwas ist meist mit Datenverlust • Zeile 4: Das Programm wird angewiesen, die
verbunden. Daher rate ich dazu, ein Projekt Variable zufall auf die Form zu schreiben.
bei Arbeitsbeginn unter einem eigenen Namen
Abgesehen davon, dass du mit den Zahlen nicht
zu speichern und während der Arbeit immer
wieder mal die Schaltfläche für Speichern zu
viel anfangen kannst, wirst du feststellen, dass
klicken. Auf diese Art wird der aktuelle Stand bei jedem Neustart immer wieder dieselben
gesichert. Zahlen angezeigt werden – also war das doch
nichts mit dem Zufall?! Der Grund ist ein
Zufall komplizierter mathematischer Transformations-
Bevor wir dem Spiel Leben einprogrammieren, prozess. Prinzipiell benötigt die RND-Funktion
wäre ein Exkurs über den Zufall einzufügen. einen Startwert, der ohne Eingriff immer gleich
ist – daher die gleichen Zahlen. Ändert man den
Computer faszinieren immer wieder mit ihrem Startwert, wird die Sache interessanter.
sogenannten Zufallsgenerator – anscheinend sind
sie in der Lage, zufällige Ereignisse zu erzeugen, Mit der Anweisung Randomize wird jeweils
sei es die Auswahl eines Buchstabens aus dem ein neuer Startwert erzeugt. Setzt du hinter Zeile
Alfabet oder einer Zahl aus einer Zahlenreihe. 1 die Anweisung Randomize ein und startest
das Programm erneut, wirst du feststellen, dass
Natürlich gibt es beim Computern keine
die Zahlenfolgen jetzt jedesmal anders aussehen.
wirklichen Zufälle – das sieht nur so aus.
Die nächste Funktion, die wir benötigen, um zu
1. Du startest erneut Visual Basic. Das führt
anwendbaren Zufallszahlen zu kommen, ist Int.
dazu, dass du nun zwei Versionen des
Vereinfacht ausgedrückt liefert diese Funktion
Programms im Arbeitsspeicher hast
einen Wert, bei dem die Nachkommastellen
Für diesen Versuch legen wir keinen Wert auf
abgeschnitten sind. Aus 0,1234567 wird durch
die Namensgebung usw, da wir das
Programm nicht speichern. Int(0,1234567) der Wert 0. Das würde
zueiner ganzen Reihe von Nullen führen.
2. Du wählst [Link] ... Werden die erzeugten Zahlen aber z.B. mit 10
3. ... drückst im WERKZEUG-Fenster auf den multipliziert, dann verschiebt sich das Komma.
COMMANDBUTTON ... Aus
4. ... doppelklickst auf Command1 0,23*10 wird 2,3; durch Int(2,3) dann
2. So bekommt man ganzzahlige Zahlen.
5. ... und setzt folgende Eigenschaften ein:
Bei einem Würfel gibt es nur sechs mögliche
1. Sub Private Command1_Click() Zahlen. Also müsste es eine Formel geben, die
2. Dim zufall As Single den Zahlenumfang berücksichtigt. Gibt es:
3. zufall = Rnd zufall = Int(rnd * Obergrenze) +
Untergrenze
4. Print zufall
• Zeile 3: zufall = Int(Rnd * 6) + 1
5. End Sub
Jetzt klappt's! Wie gesagt, ein echter
Die Zeilen 3 – 4 sind Anweisungen, die
schicksalshafter Zufall ist das nicht, aber es
ausgeführt werden, wenn auf die Befehls-
scheint so.
schaltfläche geklickt wird.
Beende dieses Visual Basic, ohne zu speichern,
und aktiviere dein Würfelprogramm.
Gewonnen und verloren sind Variablen, in denen mit Zeile 7 bzw. Zeile 11 in den entsprechenden
die Treffer hochgezählt werden sollen. Es Anzeigefeldern mit der Eigenschaft CAPTION an.
müssen also erst einmal die Variablen deklariert Zeile 6 und Zeile 10 zeigen die Zeichenketten
werden. zwischen den Anführungszeichen an.
Hier taucht allerdings ein Problem auf: Visual Abschließend drückst du wie gewohnt F5 – und
Basic setzt den Wert der Variablen bei jedem vergiss bitte nicht, das Spiel zu speichern.
Aufruf der Prozedur wieder auf Null. Wir
würden also nicht hochzählen können. Es gibt
für dieses Problem das Schlüsselwort Static. Die Anzeige der Augenzahl
Eine mit Static deklarierte Variable behält Grundsätzlich kann unser Spiel jetzt laufen. Die
ihren aktuellen Wert so lange, bis das Programm Augenzahl-Anzeige im Bildfeld haben wir zwar
neu gestartet wird. noch nicht, du kannst aber immerhin schon
spielen. Allerdings ist es vorläufig noch ein
Zeile 2 und Zeile 3 in der folgenden Prozedur
geheimnis, welche Zahl der Computer gewürfelt
zeigen, wie die beiden Variablen deklariert
hat. Das könnte man in einem Anzeigefeld
werden.
darstellen, aber wozu haben wir das Bildfeld?!
1. Private Sub Auswertung()
Bisher zeigt der Würfel sieben Augen. Das siebte
2. Static gewonnen As Byte Auge in der Mitte brauchst du für die Eins, die
3. Static verloren As Byte Drei und die Fünf. Damit vor dem Würfeln des
4. If Zufallszahl = Ratezahl Computers eine Starteinstellung zu sehen ist,
then muss für eine Sechs das SHAPE7 verschwinden –
es darf aber nicht gelöscht werden, denn es wird
5. gewonnen = gewonnen + 1
ja gebraucht. Also muss es unsichtbar werden.
6. [Link] =
1. Du klickst SHAPE7 an ...
"Gewonnen!"
2. ... und drückst STRG + UMSCHALT + V
7. [Link] =
Im EIGENSCHAFTEN-Fenster ist die
gewonnen
Eigenschaft VISIBLE –also sichtbar –
8. Else markiert. Der Wert ist TRUE, also Wahr. Das
9. verloren = verloren + 1 Objekt ist sichtbar.
10. [Link] = 3. Nun stellst du den Wert um auf
Verloren!" Visible = False ...
11. [Link] = 4. ... und drückst auf F5
verloren
Es sollte jetzt eine Sechs erscheinen.
12. End If
Achte darauf, dass du die Eigenschaft für das
[Link] Sub SHAPE veränderst und nicht versehentlich ein
Etwas merkwürdig kommt dir sicherlich der anderes Objekt, z.B. die FORM, aktiviert hast.
Code in Zeile 5 und in Zeile 9 vor. Das Oben im EIGENSCHAFTEN-Fenster steht in der
Gleichheitszeichen ist kein mathematisches Anzeige, welches Objekt gerade 'dran' ist. Es
Zeichen, sondern ein Zuweisungszeichen. Der kann dir sonst passieren, dass plötzlich die Form
Variablen GEWONNEN wird ein Wert unsichtbar gemacht wird.
zugewiesen. In diesem Fall ist das der Du ahnst sicher schon, wie es weitergeht. Es
ursprüngliche Wert der Variablen, um 1 erhöht ( wird für jede Augenanzeige das jeweilige Shape
+ 1). Der Startwert der Variablen ist 0; dem unsichtbar gesetzt. Da kommt einige Tipparbeit
ursprünglichen Wert 0 wird der um 1 erhöhte auf dich zu, aber über BEARBEITEN | KOPIEREN
Wert zugewiesen – und das ist 0 + 1. Beim und BEARBEITEN | EINFÜGEN kannst du den
nächsten Mal wird der alte Wert 1 wiederum um Arbeitsaufwand verkürzen.
1 erhöht. So wird dem Computer das Zählen
beigebracht. Den Wert der Variablen zeigen wir
Du legst die Prozeduren 1-6 mit der folgenden Die Sache sieht so aus:
Prozedur an: Private Sub Zwei()
[Link] Sub Eins() [Link] = True
2. [Link] = False [Link] = False
3. [Link] = False [Link] = False
4. [Link] = False [Link] = False
5. [Link] = False [Link] = False
6. [Link] = False [Link] = True
7. [Link] = False [Link] = False
8. [Link] = True End Sub
[Link] Sub Es müssen die beiden Augen links oben und
Diese Prozedur zeigt dir, dass bis auf SHAPE7 rechts unten, also Shape1 und Shape6 sichtbar
alle Shapes auf unsichtbar gesetzt sind, so dass (Visible = True), alle anderen unsichtbar
beim Aufruf von PROZEDUR EINS nur das sein. Die Eins im Code wird durch Zwei ersetzt.
mittlere Auge sichtbar sein dürfte. Um das zu Dann drückst du auf F5 und klickst die
überprüfen, legen wir eine Befehlsschaltfläche Befehlsschaltfläche an. Es sollten zwei Augen zu
an, doppelklicken auf sie und versehen sie mit sehen sein.
folgender Prozedur: So machst du das jetzt für jede Augenzahl – und
Private Sub Command1_Click() testest immer wieder mit der Prozedur auf Seite
Eins 22:
End Sub If Zufallszahl = Ratezahl Then
In diese Test-Prozedur trägst du den Aufruf der Gewonnen
Prozedur Eins ein, dann drückst du auf F5 und Else
klickst auf die Befehlsschaltfläche. Eigentlich Verloren
müsste jetzt die Augenzahl Eins auf dem Würfel
zu sehen sein. Stimmt’s? End If
Wie du dich vielleicht erinnerst, hatte ich darauf Wenn du für alle Prozeduren den Code
hingewiesen, dass es wichtig ist, die richtige geschrieben hast, löscht du die Prozedur
Command1_
Reihenfolge der Shapes einzuhalten. Hast du
alles beachtet, dürfte es keine Probleme geben. Click. Nun fehlt nur noch die Anbindung an
diese Prozeduren. Der Compter erzeugt eine Zahl
1. Du markierst den Code in der Prozedur Eins – und diese Zahl soll an die Augenanzeige-
und zwar nur den Code, also die Zeilen 2-8 in Prozeduren weitergeleitet werden, d.h. mit
der Prozedur oben auf der Seite! Wenn-Dann müssten wir weiterkommen. Wenn
2. Dann drückst du STRG + C, wodurch der Zufallszahl = 1, dann Prozedur Eins usw. Es gibt
markierte Teil kopiert wird, ... natürlich verschiedene Wege, so ein Problem zu
3. setzt den Cursor in die Leerzeile in Prozedur lösen, aber für diesen Zweck ist der Weg der
Zwei ... Wenn-Dann (If-Then)-Entscheidung der
übersichtlichste.
4. und drückst STRG + V
Sehen wir uns das an einer vorläufigen Prozedur Du löschst die Befehlsschaltfläche sowie die
an, indem wir auf COMMAND1 doppelklicken gesamte eben formulierte Prozedur
und folgenden Code einfügen: Weiter geht es mit einem Doppelklick auf
1. Dim Titel As String cmdSchließen.
2. Dim Meldung As String Der einzugebende Code lautet:
3. Titel = "Nachfrage" 1. Private Sub
4. Meldung = "Willst du das cmdSchließen_Click()
Spiel wirklich beenden?" 2. Dim Meldung As String
5. MsgBox Meldung, 3 + 32, 3. Dim Titel As String
Titel 4. Dim Typ As Byte
In dieser Prozedur werden zuerst die Variablen 5. Dim Schaltfläche As Byte
als Zeichenketten oder STRINGS deklariert, dann
6. Meldung = " Willst du das
den Variablen die Werte zugewiesen und in Zeile
Spiel wirklich beenden?"
5 die MSGBOX-Anweisung mit dem Typ 3 der
Typentabelle formuliert. Dadurch werden die 7. Titel = "Sicherheitsanfrage"
Befehlsschaltflächen Ja, Nein und Abbrechen 8. Typ = 3 + 32 + 0
dargestellt. 9. Schaltfläche =
Zum gewählten Typ für die Darstellung der MsgBox(Meldung, Typ, Titel)
Befehlsschaltflächen kann noch der Typenwert [Link] Schaltfläche = 6 Then
für Symbole addiert werden. Der Wert 3 + 32
kann als Summe angegeben werden (35) oder 11. End
auch als Term und zeigt die Befehlsschaltflächen [Link] Schaltfläche = 7
JA, NEIN und ABBRECHEN sowie ein Then
Fragezeichen an. So eine Kombination eignet 13. MsgBox "Dann eben
sich selbstverständlich, um auf eine Frage nicht!", vbOKOnly
hinzuweisen. So weit klappt ja alles, aber es
[Link] If
muss auch darauf reagiert werden, wenn eine
Schaltfläche angeklickt wird. Die Click- [Link] Sub
Ereignisse für Message-Boxes sind vordefiniert, Innerhalb der Prozedur CMDSCHLIEßEN muss die
siehe Tabelle. Der entsprechende Wert wird in Abfrage eingerichtet werden. Nachdem die
einer Variablen gespeichert und abgefragt. Variablen deklariert wurden und der Typ
Typ Beschreibung festgelegt ist, wird der Variablen SCHALTFLÄCHE
in Zeile 9 der Wert der Message-Box übergeben.
1 OK wurde angeklickt In Zeile 10–13 werden die Schaltflächen-Klicks
2 Abbrechen wurde angeklickt oder ausgewertet, wobei in Zeile 12 eine weitere
[ESC] Message-Box als Anweisung eingefügt ist. Es
3 Abbrechen wurde angeklickt wurde anstatt des Wertes 0 für den Typ
(SCHALTFLÄCHE OK) eine Visual Basic-
4 Wiederholen wurde angeklickt Konstante eingesetzt. Davon gibt es eine ganze
5 Ignorieren wurde angeklickt Menge, die genauso wie der Zahlenwert
verwendet werden können. Auch für diejenigen,
6 Ja wurde angeklickt
die kein Englisch können, ist die Konstante
7 Nein wurde angeklickt manchmal verständlicher als der reine
Für diesen Zweck wird die Message-Box als Zahlenwert
Funktion eingesetzt. Es wird also nicht nur eine
Mitteilung gemacht (Message-Box als
Anweisung), sondern eine Weiterverarbeitung
der Klicks vorgenommen.
Do-Loop-Schleifen
Während man die FOR-NEXT-Schleife als Wichtig ist, dass du dir immer ganz klar über den
Zählschleife bezeichnet, kann die DO-LOOP- Schleifenablauf bist, damit keine unliebsamen
Schleife als Bedingungsschleife bezeichnet Überraschungen passieren – entweder dass die
werden. Die Bedingungen können am Ende oder Schleife gar nicht durchlaufen wird, weil die
auch am Anfang der Schleife getestet werden. Abbruchbedingungen schon vorher erfüllt sind,
1. Do While Bedingung oder dass die Schleife nie aufhört, weil die
Abbruchbedingung nicht erreicht wird.
2. Do Until Bedingung
Anweisungen
Loop
Beim Testen der Abbruchbedingung hat man die
Möglichkeit, entweder Zeile 1 oder Zeile 2
einzusetzen, je nachdem, welchen Zweck man
erreichen will. Do While bedeutet, dass die
Schleife so lange ausgeführt wird, wie die
Bedingung erfüllt ist. Do Until bedeutet, dass
die Schleife so lange ausgeführt, bis die
Bedingung erfüllt ist. Ob du die While- oder
Until-Version bevorzugst, ist Geschmackssache.
Es muss immer nur die Bedingung entsprechend
geschrieben sein.
Do
Anweisungen
1. Loop While Bedingung
Loop Until Bedingung
Ob du allerdings am Ende oder am Anfang einer
Schleife testest, ist nicht egal, denn der Test am
Ende einer Schleife bedeutet, dass die Schleife
erst einmal durchlaufen werden muss.
Wenn in einer Datei ein Name gesucht werden
soll, ist es natürlich sinnvoll, den Abbruch zu
Beginn zu testen, denn wenn der Name gar nicht
vorhanden ist, sucht die Prozedur endlos weiter.
Irgendwann hängt sie sich dann auf.
Do Until „Klaus“ Or
Dateiende
Eingaben in ein Textfeld
Loop
Diese Schleife wird durchlaufen, bis entweder
‘Klaus’ gefunden wird oder das Dateiende
erreicht ist.
Zweites Programmprojekt
Auch bei dieser Prozedur steht nicht die Klasse Wie gesagt wird nur ein optischer Effekt erzeugt.
des Programms im Vordergrund, sondern die Auf das Programm hat das keinen Einfluss, und
Programmiertechniken. Grundlage ist unser wie du siehst, gibt es auch keine besonderen
Würfelspiel. Diesmal sollen drei Würfel Eigenschaften. Die Eigenschaft CAPTION spielt
eingesetzt werden. Dafür muss die Form die größte Rolle – damit hat es sich auch schon.
natürlich größer aufgezogen werden. Übrigens kannst du hier einen Schönheitstrick
Du startest Visual Basic und wählst wiederum nutzen – damit die CAPTION nicht so sehr an der
die [Link] Rahmenlinie klebt, kannst du vor und nach dem
Wert für sie ein Leerzeichen eingeben.
Oberfläche
Hast du die Form entsprechend der Tabelle
Einen Vorschlag zur Oberfläche siehst du im eingerichtet und startest sie mit F5, stellst du fest,
Bild. Die Kodierung erarbeiten wir anschließend. dass sie keine Titelleiste hat: wenn du den Wert
für CONTROLBOX auf FALSE setzt und BORDER-
STYLE auf FESTER DIALOG, erhältst du eine
Form, die nur aus einer einfachen Fläche besteht.
Das bedeutet natürlich auch, dass die Schalt-
flächen für MINIMIEREN, MAXIMIEREN und
SCHLIEßEN fehlen.
Einen Titel soll das Projekt natürlich haben. Also
setzen wir ein Bezeichnungsfeld oder LABEL ein.
Label1
CAPTION Beschriftung Würfelspiel
mit Visual
Basic 6.0
BORDER- Randform Fest Einfach
STYLE
Für diese Oberfläche werden Rahmenfelder oder
FRAMES eingesetzt. Diese haben ALIGNMENT Ausrichtung Zentriert
programmtechnisch keinen Nutzen – sie dienen FONT Schrift aussuchen
schlicht zu Gestaltungszwecken. Mit ihrer Hilfe
lassen sich Gruppierungen von Objekten FORECOLOR Schriftfarbe aus Palette
gestalterisch vornehmen. In unserem Beispiel aussuchen
fügen wir die Befehlsschaltflächen für die Zahlen
oder die drei Bildfelder für die Würfelanzeigen Unsere Arbeitsschritte sehen also so aus:
in Rahmenfelder ein. • Zunächst speichern wir unser Projekt über
Form. DATEI | PROJEKT SPEICHERN.
HEIGHT Höhe ca. 5950 • Dann erstellen wir die Rahmen über
DREIWÜ[Link] ...
WIDTH Breite 7040
• ... und die Würfel über DREIWÜ[Link] ...
CAPTION Beschriftung ""
und ziehen endlich das Rahmenfeld auf.
CONTROLBOX System- False
Menüfeld
BORDERSTYLE Rahmenform Fester
Dialog
BACKCOLOR Hintergrund- auswählen
farbe
Soll ein Rahmenfeld sich wie ein Behälter für die 6. Nun legst du das zweite Rahmenfeld an, ...
anderen Objekte verhalten, müssen Objekte im(!) Frame2
Rahmenfeld aufgezogen werden. Setzt man sie
von außen hinein, z.B. über Doppelklick auf das CAPTION Beschriftung Schaltflächen
Werkzeug und Drag & Drop, entsteht das 7. ...ziehst sechs Befehlsschaltflächen auf, ...
Problem, dass die angeordneten Objekte beim
8. ... setzt CAPTIONS wie angezeigt ...
Verschieben des Rahmenfeldes an ihrem Platz
liegen bleiben. Ziehst du die Objekte aber im 9. ... und gibst ihnen die Namen
Rahmenfeld auf, werden sie mitverschoben. cmdEins, cmdZwei, cmdDrei,
cmdVier, cmdFünf, cmdSechs
1. Zunächst ziehst du den ersten Rahmen auf:
10. Fehlt noch das dritte Rahmenfeld:
Frame1 Frame3
CAPTION Beschriftung Würfelanzeige CAPTION Beschriftun Ergebnisse
(Leerzeichen nicht g
vergessen!)
11. Hier setzt du drei Bezeichnungsfelder ein:
2. Nun ziehst du im FRAME1 drei Bildfelder auf:
Labels
Picture 1 – 3
NAME Name lblGewonnen
NAME Name Würfel1, lblVerloren
Würfel2, lblKapital
Würfel3
CAPTION Beschriftung 00
BACKCOL Hintergrund aus Palette
OR farbe aussuchen FONT Schrift aussuchen
ALIGNMENT Ausrichtung zentriert
3. Dann ordnest du im ersten Bildfeld SHAPE1
BORDER- Randform Fest Einfach
bis SHAPE7 an, so wie wir das im
STYLE
vorhergehenden Programm 'Würfeln' getan
haben, ... FORECOLOR Schriftfarbe aussuchen
4. und wiederholst den Prozess in den anderen
12. Für die Beschriftung der Bezeichnungsfelder
Bildfeldern.
legst du wiederum drei Bezeichnungsfelder
5. Die Namen für die Figuren sollen einen an und setzt als CAPTIONS: 'gewonnen',
Bezug zum jeweiligen Würfel haben: im 'verloren', 'Kapital'.
ersten Würfel bekommt SHAPE1 den Namen
Auge1_1, SHAPE2 den Namen Auge2_1 13. Felt noch noch ein viertes Rahmenfeld für die
Befehlsschaltflächen Spielregeln und
usw. Im zweiten Würfel heißen die Namen
Beenden:
dann Auge1_2, Auge2_2 usw. und im
dritten Würfel Auge1_3, Auge2_3 usw. Befehlsschaltflächen
Das ganze sieht so aus: NAME Name cmdSpielregel
Auge1_1 Auge1_2 Auge1_3 n
Auge2_1 Auge2_2 Auge2_3 CAPTION Beschriftung &Spielregeln
Auge3_1 Auge3_2 Auge3_3
Auge4_1 Auge4_2 Auge4_3 NAME Name cmdBeenden
Auge5_1 Auge5_2 Auge5_3 CAPTION Beschriftung &Beenden
Auge6_1 Auge6_2 Auge6_3
Auge7_1 Auge7_2 Auge7_3
Wenn du den Wert der Eigenschaft Caption 3. Es müssen für jeden Würfel Zufallszahlen
einträgst, vergiss nicht das sogenannte erzeugt werden.
'Kaufmännisch Und' (&). Dieses Zeichen 4. Also doppelklickst du in eine freie Stelle der
veranlasst Windows-Programme dazu, den Form ...
Buchstaben, vor dem es steht, zu
5. ... und gibst im Prozedurrahmen FORM_LOAD
unterstreichen. Damit kannst du das Klick-
die Anweisung Randomize ein – damit wird
Ereignis mit der Tastenkombination ALT +
(unterstrichener) BUCHSTABE auslösen. Das beim Start des Programms, also wenn die
Klick-Ereignis Beenden wird also mit ALT Form in den Arbeitsspeicher geladen wird,
der 'Zufallsgenerator' aktiviert.
+ B ausgelöst.
6. Nun legst du die Prozedur Private Sub
Willst du einzelne Objekte aufeinander Computer an.
ausrichten, kannst du das über Drag & Drop
erledigen. Genauer geht das, wenn du die Werte 7. Die folgende Prozedur zeigt den Code, mit
LEFT, TOP, HEIGHT, WIDTH unmittelbar änderst. dem in einer Schleife für jeden Würfel
Du musst dabei nicht immer den alten Wert Zufallszahlen erzeugt werden:
löschen, sondern kannst so lange neue Werte 1 Private Sub Computer()
eingeben, bis du zufrieden bist; der alte Wert 2 Dim i As Byte
wird überschrieben. 3 For i = 1 To 3
4 Zufallszahl(i) = Int(Rnd *
Sollen Objekte auf einer Linie ausgerichtet
6) + 1
werden, empfiehlt sich FORMAT | AUSRICHTEN:
5 Next i
6 End Sub
Bevor der Code erläutert wird, müssen wir den
Begriff ARRAY erklären.
In Programmen tauchen vielfach Gruppen von
Variablen auf, die gleichartig sind. In unserem
Fall taucht für jeden Würfel die Variable
ZUFALLSZAHL auf, die grundsätzlich keine
Unterschiede aufweist. Also wird hier ein
Variablenfeld angelegt, in dem jede gleichartige
Variable einen Index zur Unterscheidung
bekommt. So ein Variablenfeld nennt man ein
ARRAY. Der Index ist in Klammern an die
Vergiss nicht, dass du bei gehaltener STRG-Taste
Variable angefügt; und über ihn werden die
mehrere Objekte gleichzeig markieren kannst.
Variablen angesprochen.
Vermutlich musst du die Sache etliche Male
7. Hier sieht die Sache so aus:
ausprobieren, bis du die Wirkungsweise
verstanden hast. Ausgerichtet wird immer an Zufallszahl(1)
dem Objekt, das die dunkleren Anfasser hat – Zufallszahl(2)
meistens also an dem Objekt, das zuletzt Zufallszahl(3)
angeklickt wurde. Du musst dir also vorher über 8. Wie deklariert man nun ein Array? Ähnlich
die Reihenfolge klar sein. wie einfache Variablen:
Dim Zufallszahl(3)
Code
9. Da die Variable auch in anderen Prozeduren
Die Oberfläche steht nun also – fehlt noch der benutzt wird, deklarierst du sie im
gesamte Code, der sie ans Laufen bringt. Allgemeinteil am Anfang des Code, also
1. Du doppelklickst auf auf CMDBEENDEN ... hinter Option Explicit.
2. ... und trägst im Prozedurrahmen 10. FOR-NEXT-Schleifen sahen wir uns im
CMDBEENDEN_CLICK die Anweisung End Abschnitt „Kontrollstrukturen“ auf Seite 28
ein. an. Innerhalb der Schleife werden drei
Zufallszahlen erzeugt und über den Index 16. Entsprechend der Zufallszahl steuert das
jeweils der Variablen Zufallszahl() Programm die Prozedur für die Augenanzeige
zugeordnet. Es können auch zwei oder drei an. Dort werden die Augen mit der bekannten
gleiche Zahlen erzeugt werden. Soll der Eigenschaft Visible = True/False
Spieler die Zahlen des Computers sehen, dargestellt:
kannst du die Werte im sogenannte Private Sub Eins1()
Direktfenster anzeigen lassen. Auge1_1.Visible = False
11. Zwischen Zeile 4 und Zeile 5 in der obigen Auge2_1.Visible = False
Prozedur gibst du folgende Zeile ein: Auge3_1.Visible = False
[Link] Zufallszahl(i) Auge4_1.Visible = False
Auge5_1.Visible = False
12. In der Prozedur FORM_LOAD gibst du den
Auge6_1.Visible = False
Aufruf der Prozedur COMPUTER ein:
Auge7_1.Visible = True
Private Sub Form_Load()
End Sub
Randomize
Private Sub Zwei1()
Computer
Auge1_1.Visible = True
End Sub
Auge2_1.Visible = False
Nun werden nach jedem Programmstart im Auge3_1.Visible = False
Direktfenster die drei vom Computer erzeug- Auge4_1.Visible = False
ten Zahlen angezeigt. Mit der [Link]- Auge5_1.Visible = False
Methode kannst du in diesem Fenster jede Auge6_1.Visible = True
Variable anzeigen und damit ganz einfach Auge7_1.Visible = False
überprüfen, welche Werte Variablen haben. End Sub
13. Manchmal ist das Direktfenster unübersicht- Private Sub Drei1()
lich. Für diese Fälle lege ich mir ein Bezeich- Auge1_1.Visible = True
nungsfeld an und lasse die Variable über die Auge2_1.Visible = False
Eigenschaft CAPTION anzeigen. Auge3_1.Visible = False
Auge4_1.Visible = False
14. Hast du dich überzeugt, dass das Programm
Auge5_1.Visible = False
bisher einwandfrei läuft, löscht du die Anwei-
Auge6_1.Visible = True
sung [Link] wieder – den Aufruf
Auge7_1.Visible = True
COMPUTER dagegen lässt du stehen. End Sub
15. Jetzt werden diese Zahlen auf die Würfel- Private Sub Vier1()
anzeige übertragen – hier mit der Methode Auge1_1.Visible = True
SELECT-CASE. Das Prinzip siehst du im Auge2_1.Visible = True
Abschnitt „Kontrollstrukturen“: Auge3_1.Visible = False
Private Sub Anzeige1() Auge4_1.Visible = False
Select Case Zufallszahl(1) Auge5_1.Visible = True
Case 1 Auge6_1.Visible = True
Eins1 Auge7_1.Visible = False
Case 2 End Sub
Zwei1 Private Sub Fünf1()
Case 3
Drei1 Auge1_1.Visible = True
Case 4 Auge2_1.Visible = True
Vier1 Auge3_1.Visible = False
Case 5 Auge4_1.Visible = False
Fünf1 Auge5_1.Visible = True
Case 6 Auge6_1.Visible = True
Sechs1 Auge7_1.Visible = True
End Select End Sub
End Sub
Private Sub Sechs1()
Chance gegen den Computer hat, sollen die Für welche Variante du dich entscheidest,
Verluste nicht mehrfach zählen: bleibt dir überlassen. Man könnte an dieser
1 For i = 1 To 3 Stelle beispielsweise eine
2 If Spieler = Zufall Auswahlmöglichkeit für Schwierigkeitsgrade
zahl(i) Then einbauen.
3 gewonnen = gewonnen + 1 26 Zeile 14 – 16 in der Prozedur zur
4 [Link] = Auswertung, Seite 37, und Zeile 7 – 9 in der
gewonnen ersten der beiden eben angeführten
5 Kapital = Kapital + 1 Prozeduren zur Schleifenabfrage auf Seite 38
6 [Link] = haben eine Besonderheit. Der Code gehört in
Kapital eine zusammenhängende Zeile. Die Zeile
7 ElseIf Spieler <> Zufalls- wird dadurch ziemlich lang und kann nur
zahl(1) And _ noch über die Bildlaufleisten eingesehen
8 Spieler <> Zufall werden. Visual Basic erkennt den Unterstrich
zahl(2) And _ als Trennzeichen einer Zeile und verbindet
9 Spieler <> Zufalls- intern die Zeilenteile wieder. Wichtig ist ein
zahl(3) Then Leerzeichen vor dem Unterstrich. Wenn du
10 verloren = verloren + 1
die Zeilenteile im Codefenster etwas
11 [Link] =
einrückst, ist besser erkennbar, welche Teile
verloren
zusammen gehören
12 Kapital = Kapital - 1
13 [Link] = 27 Zum Abschluss wird die Spielanleitung
Kapital programmiert. Den Text überlasse ich dir.
14 End If Eine Möglichkeit ist, eine Mitteilungsbox
15 Next anzulegen:
25 In dieser Prozedur wird durch eine andere Private Sub
Programmiertechnik erreicht, dass die cmdSpielregeln_Click()
Nichttreffer mehrfach hochgezählt werden. Dim Titel As String
Die folgende Prozedur zeigt eine andere Dim Meldung As String
Codierweise: Titel = "Spielanleitung"
Meldung = Meldung + "Der
1 For i = 1 To 3
Computer würfelt drei
2 If Spieler = Zufalls-
Zufallszahlen." + Chr$(10) +
zahl(i) Then
Chr$(13)
3 gewonnen = gewonnen + 1
Meldung = Meldung + "Du
4 l [Link] =
kannst gegen den Computer
gewonnen
würfeln, " + Chr$(10) +
5 Kapital = Kapital + 1
Chr$(13)
6 [Link] =
Meldung = Meldung + "usw."
Kapital
MsgBox Meldung, vbOKOnly,
7 ElseIf Spieler <> Zufalls-
Titel
zahl(i) Then
End Sub
8 verloren = verloren + 1
9 [Link] = Größere Gestaltungsmöglichkeiten hast du, wenn
verloren du eine zweite Form verwendest. Dazu musst du
10 Kapital = Kapital - 1 wissen, dass es zwei Möglichkeiten gibt, ein
11 [Link] = Formular zu laden. Über die LOAD-Anweisung
Kapital wird ein Formular nur in den Speicher geladen,
12 End If aber nicht angezeigt – mit der SHOW-Methode
13 Next dagegen wird die Form geladen und angezeigt.
Der umgekehrte Weg, nämlich eine Form wieder Zum Abschluss setzen wir noch ein
los zu werden, verwendet analog zwei Mitteilungsfenster ein für den Fall, dass das
Möglichkeiten. Soll eine Form komplett aus dem Kapital weniger als Null, bzw. größer als 25
Arbeitsspeicher entfernt werden, wird sie mit der wird. Der Wert soll nur ein Lob für eine gute
UNLOAD-Anweisung entladen, ansonsten Leistung sein; du kannst selber festlegen, ab
versteckt man sie nur mit der HIDE-Methode. wann gutes Würfeln gelobt werden soll.
Du aktivierst PROJEKT | FORMULAR HINZUFÜGEN Die Abfrage fügst du in unseren Code zur
und wählst ein Formular. Fehlerüberprüfung auf Seite 37 zwischen Zeile 5
Wie du siehst, hat Visual Basic verschiedene und Zeile 6 ein:
Dialog-Formulare in seinem Angebot, die auch If Kapital < 0 Then Alarm
schon mit Code versehen sind. Die solltest du If Kapital > 25 Then Loben
alle einmal ausprobieren. Im Projektfenster ist
Du legst die Prozedur ALARM an:
die neue Form als FORM2 angezeigt. Wenn
Programme klein sind und nur wenige 1. Private Sub Alarm()
Projektteile enthalten, belasse ich es meistens bei 2. Dim Titel As String
den vorgegebenen Namen. Hier könntest du aber 3. Dim Meldung As String
z.B. FRMANLEITUNG als Name eingeben. 4. Dim Schaltfläche As Byte
5. Titel = "ALarm"
Du doppelklickst auf CMDSPIELREGELN und 6. Meldung = "Du bist leider
gibst folgenden Code ein: pleite!"
Private Sub 7. Schaltfläche =
cmdSpielregeln_Click() MsgBox(Meldung, 1 + 16,
[Link] Titel)
End Sub 8. If Schaltfläche = 1 Then
Dann drückst du auf F5 und dann auf 9. End
SPIELREGELN. 10. End If
Die Form FRMANLEITUNG kannst du mit deinen 11. End Sub
Kenntnissen so gestalten, wie du es möchtest. In der Prozedur ALARM wird ein
Entweder setzt du die Print-Methode für den Mitteilungsfenster als Funktion ausgegeben. In
Text ein, oder du legst dir ein Textfeld an, oder Zeile 7 wird der Variablen SCHALTFLÄCHE ein
du verwendest ein Bildfeld oder ... In jedem Fall Wert des Mitteilungsfensters zurückgegeben, der
muss eine Prozedur geschrieben werden, mit der in Zeile 8 abgefragt wird. Wird der Wert 1
das Fenster wieder geschlossen wird. Also zurückgegeben, also die Schaltfläche OK
doppelklickst du auf FRMANLEITUNG, wählst ein angeklickt, soll das Programm beendet werden.
CLICK-Ereignis und gibst folgenden Code ein: Alle anderen Eingaben haben keine Wirkung.
Private Sub Form_Click() Folglich wird bei Abbrechen zum
[Link] Spielprogramm zurückgekehrt.
End Sub
Die Spielanleitung wird nur versteckt. Dadurch
steht sie dem Spieler immer wieder sehr schnell
zur Verfügung. Eine Befehlsschaltfläche mit dem
CLICK-Ereignis ist vielleicht offensichtlicher.
Zumindest solltest du darauf hinweisen, dass die
Form durch einen Klick geschlossen werden
kann, z.B. als CAPTION.
Du wählst DATEI | FORM FRMANLEITUNG
SPEICHERN UNTER ... und gibst als Name
Anleitung ein
Nun legst du die Prozedur LOBEN an: In der Schleife, Zeile 4, werden die
1. Private Sub Loben() Hintergrundfarben der Form sowie der Rahmen
2. 'blinken fünfzehn Mal mit den Standardfarben versehen.
3. Dim i As Byte Damit es nicht zu schnell geht, habe ich bei
4. For i = 0 To 15 jedem Schleifendurchlauf eine Verzögerung
5. [Link] = eingebaut:
QBColor(i) 1. Private Sub verz(zeit!)
6. [Link] =
2. Dim zeit1 As Variant
QBColor(i)
7. [Link] = 3. zeit1 = Timer
QBColor(i) 4. Do
8. [Link] = 5. DoEvents
QBColor(i)
9. [Link] = 6. Loop Until (Timer - zeit1
QBColor(i) >zeit)
10. verz 0.1 7. End Sub
11. Next
Danach werden die Farben wieder auf ihren
12. [Link] =
Ursprungswert gesetzt.
&H8000000F
13. [Link] = Die Prozedur VERZ(ZEIT!)ist ziemlich verzwickt,
&H8000000F weswegen ich dir empfehle, sie einfach zu
14. [Link] = übernehmen – dem unbekannten Autor sei
&H8000000F gedankt!
15. [Link] =
&H8000000F
16. [Link] =
&H8000000F
[Link] Sub
Grafik
Unter Windows muss man sich die gesamte 6. Jetzt erstellst du eine
Bildschirmdarstellung als Grafik vorstellen. BEFEHLSSCHALTFLÄCHE.
Auch Text-Ausgaben sind eine Form von Grafik. 7. Hier setzt du als NAME cmdSchließen ...
Visual Basic bietet grundsätzlich zwei ... und als CAPTION Ende.
Möglichkeiten, Grafik einzusetzen:
8. Du erstellst noch eine Befehlsschaltfläche, ...
1. Grafik-Steuerelemente mit ihren
9. ... setzt als NAME cmdZeichnen ...
Eigenschaften und Methoden aus der
Werkzeugsammlung 10. ... und als CAPTION Zeichnen.
2. GDI-Funktionen (Graphical Device 11. Dann doppelklickst du auf CMDZEICHNEN ...
Interface) Der Code lautet:
Bis auf bestimmte Spezialfälle, wie z.B. Private Sub
Polygone, stehen für die gängige Grafik- cmdZeichnen_Click()
Programmierung genügend Visual Basic- [Link] (100, 100)-
Komponenten zur Verfügung. (500, 500)
End Sub
Grundlagen 12. ... drückst auf F5
Grafikoperationen sind gleichermaßen im 13. ... und endlich auf ZEICHNEN.
Fenster, also in der FORM, auf dem Drucker oder
Nach F5 wird eine Linie von links oben nach
in einem Bildfeld möglich. Für alle drei
rechts unten gezeichnet.
Komponenten gelten gleiche Methoden.
14. Nun doppelklickst du auf CMDSCHLIEßEN, ...
Methoden
15. setzt End,...
Grafikausgaben beziehen sich grundsätzlich auf
ein bestimmtes Objekt, also nicht auf den 16. ... beendest das Programm und vergrößerst
gesamten Bildschirm. So kann eine Ausgabe mit das Bildfeld ...
der Methode PRINT auf einem Drucker erfolgen, 17. ... und drückst wiederum F5
aber auch in einem Bildfeld oder in der Form.
Die Linie befindet sich innerhalb des Bildfeldes
Methoden Beschreibungen an derselben Position.
LINE zeichnet eine Linie oder ein Es taucht die Frage auf, ob die Linie von links
Rechteck oben nach rechts unten oder umgekehrt
CIRCLE zeichnet einen Kreis, eine Ellipse gezeichnet wird – bei der
oder einen Bogen Arbeitsgeschwindigkeit des Computers kann
man nicht erkennen, in welche Richtung
PSET setzt einen Punkt gezeichnet wurde. Dazu benötigen wir einige
POINT ermittelt die Farbe eines Punktes grundlegende Kenntnisse.
PRINT gibt eine Zeichenfolge aus Eigenschaften
CLS löscht den Inhalt des Objektes Schüler kennen ein beliebtes Spiel, das
vornehmlich im langweiligen Unterricht gespielt
1. Du startest Visual Basic, ... wird: »Schiffe versenken«. Verwendet wird ein
2. gibst der FORM den NAMEN frmHaupt ... kariertes Papier – aus guten Gründen meist aus
dem Mathe-Heft.
3. ... und speicherst sie als GRAFIK1
Jedes Kästchen hat durch die Angaben für die
4. Dann ziehst du in der Form ein großes Zeile und die Spalte einen festgelegten Platz. Das
BILDFELD auf, ... 'x' befindet sich in Zeile '4' und Spalte 'd'. Mit der
5. ... und setzt als NAME picGrafik1 Angabe 4/d wird der Ort bestimmt, an dem sich
eindeutig das 'x' befindet.
Die Methode LINE kann noch mehr als nur 11. [Link]
Striche in das Bildfeld zeichnen. Die Anfangs- (x1 + Faktor * i,
und Endkoordinaten bestimmen nicht nur y1 + Faktor * i)- _
Anfang und Ende einer Linie, sondern auch die 12. (x2 + Faktor * i,
gegenüberliegenden Ecken eines Rechtecks y2 + Faktor * i),
RGB(i, 0, 0), B
[Link]
13. Next
(x1, y1)-(x2, y2),
[Link] Sub
QBColor(Farbe), B
Dieser Code erzeugt Rechtecke mit den In einer Schleife werden nacheinander 255
Anfangskoordinaten als linke obere Ecke und Rechtecke gezeichnet. Die Zeilen 11 und 12
den Endkoordinaten als rechte untere Ecke in der gehören hintereinander. Der Startpunkt x1
gewünschten Farbe – das abschließende B ist errechnet sich aus der Variablen x1 mit dem
wichtig, da es das Rechteck aktiviert. Drückst du Wert 100 plus dem Faktor mit dem Wert 7.5 *
auf F5, wird das Ergebnis angezeigt. i . i hat zu Beginn der Schleife den Wert 0,
Der nächste Code erzeugt ein ausgefülltes d.h. der Startpunkt x1 = x1 + 7.5 * 0 =
Rechteck: 107.5. Der Startpunkt für y1 und die
[Link] Endpunkte errechnen sich entsprechend.
(x1, y1)-(x2, y2), Für die Farbe wurde die RGB-Funktion
QBColor(Farbe), BF eingesetzt. Der Farbwert ändert sich bei jedem
Vergiss auch hier nicht die letzten beiden Code- Schleifendurchlauf von RGB(0,0,0) bis
Buchstaben! RGB(254,0,0). So entsteht der Effekt eines
Nun wählst du DATEI | SPEICHERN VON Farbtunnels.
[Link] UNTER ... und gibst als Name Eine andere häufig eingesetzte Methode ist
GRAFIK2ein. CIRCLE. Mit dieser Methode wird ein Kreis, eine
Dann wählst du DATEI | PROJEKT SPEICHERN Ellipse oder auch nur ein Kreisbogen gezeichnet.
UNTER ... und gibst wiederum den Namen Die neuen Kenntnisse über das
GRAFIK2 an Koordinatensystem gelten auch hier.
Schließlich löschst du den Code in CMDZEICH- Du löschst den aktuellen Code und setzt den
NEN_CLICK mit Ausnahme der Variablen- nachfolgenden ein:
deklarationen 1. Private Sub
Lässt du den Computer Berechnungen ausführen, cmdZeichnen_Click()
erzielst du hübsche überraschende Effekte: 2. Dim x1 As Single,
1. Private Sub y1 As Single
cmdZeichnen_Click() 3. Dim Radius As Single
2. Dim i As Integer
3. Dim x1 As Single, 4. x1 = 500: y1 = 500
x2 As Single 5. Radius = 300
4. Dim y1 As Single, 6. [Link] (x1,
y2 As Single y1),
5. Dim Faktor As Integer Radius, QBColor(12)
7. End Sub
6. x1 = 100: x2 = 2000 Dann wählst du DATEI | SPEICHERN VON
7. y1 = 100: y2 = 2000 [Link] UNTER ... mit dem Namen
8. [Link] = 10 GRAFIK3 sowie DATEI | PROJEKT SPEICHERN
9. Faktor = 7.5 UNTER ... mit dem Namen GRAFIK3
Der Einsatz der Methode entspricht dem
10. For i = 0 To 254 Vorgang bei LINE. Allerdings benötigt man nur
den Mittelpunkt des Kreises im
Koordinatensystem und den Radius des Kreises
herstellen. Dazu benötigen wir Der nächste Schritt auf dem Weg zum
mathematischeVorkenntnisse. Ich hatte schon Kuchendiagramm ist sehr einfach. Die Methode
erwähnt, dass zwei unterschiedliche Maßangaben CIRCLE fügt eine Linie vom Start- bzw.
für einen Kreisbogen vorhanden sind: das Endpunkt des Kreisbogens zum Mittelpunkt ein,
Gradmaß – ein Vollkreis hat 360°, ein Rechter wenn die Werte negativ sind. Also setzt du ein
Winkel 90° – und das Bogenmaß. Wir messen Minus vor die 0 und vor 67.
normalerweise Winkel in Grad, also benötigen Enttäuscht? Nun ja – offensichtlich gibt es für
wir ein Formel, die den Computer zwingt, so zu Visual Basic kein minus 0. Das Problem
rechnen, wie wir das wollen. bekommst du mit hinreichender Genauigkeit
Ohne in Einzelheiten zu gehen, nur so viel: die gelöst, wenn du anstatt 0 den Wert 0.000001
Kreiszahl π (Pi) hat einen abgerundeten Wert einsetzt. Das millionstel Grad ist nicht
von 3,14159. 1° hat also den Wert π/180. Wollen bemerkbar, der Computer wird aber überlistet –
wir einen Kreisbogen berechnen, der einen denn die Zahl
Winkel von 45° umschließt, muss der Computer –0.000001 gibt es natürlich.
45 * (π / 180) berechnen. Füge noch folgende Zeilen in den Code ein:
Berücksichtigt werden muss [Link] = 0 '(das
noch, wie der Computer die ist der Wert für 'ausgefüllt')
Winkelangaben sieht. Wo [Link] =
liegt für ihn 0°? Stelle dir dazu QBColor(5)
das Ziffernblatt einer Uhr vor. Das Tortenstück ist fertig, das Prinzip bekannt.
Bei 3-Uhr liegt 0°, und es Wenn man jetzt bedenkt, dass ein Kreis 360° hat,
wird gegen den Uhrzeigersinn weitergezählt, so kann man natürlich jeden Anteil des Kreises
dass oben 90°, bei 9 Uhr 180° und bei 6 Uhr berechnen und zeichnen lassen. Nehmen wir an,
270° [Link] wir einen Kreisbogen von 0° dass wir drei Werte haben, nämlich 67, 53, 90,
bis 67° zeichnen, heißt die Anweisung also: die anteilmäßig als Tortenstücke dargestellt
[Link] (x1, y1), werden sollen.
Radius, QBColor(15), 1. [Link] = 0
0 * (3.14159 / 180), 2. [Link] =
67 * (3.14159 / 180) QBColor(5)
Du löschst den Code in CMDZEICHEN_CLICK bis 3. [Link] (x1, y1),
auf die Dim-Zeilen und gibst diese Zeile ein. Radius, QBColor(15),
Wir legen eine Variable bogen an, die uns den -0.00001 * bogen,
jeweiligen Wert berechnet – sie steht in Zeile 5 -67 * bogen
der nachfolgenden Prozedur. Es muss also nur 4. [Link] =
die gewählte Gradzahl mit dem Faktor BOGEN QBColor(4)
multipliziert werden: 5. [Link] (x1, y1),
Radius, QBColor(15),
1. Private Sub cmdZeichnen_Click()
-67 * bogen, -120 * bogen
2. Dim x1 As Single,
6. [Link] =
y1 As Single
QBColor(3)
3. Dim Radius As Single
7. [Link] (x1, y1),
4. Dim bogen As Single
Radius, QBColor(15),
5. bogen = 3.14159 / 180
-120 * bogen, -210 * bogen
6. x1 = 3000: y1 = 3000
7. Radius = 1500 Verwendest du diese Prozedur, bekommst du
8. [Link] zwar schöne Tortenstückchen – aber die richtige
(x1, y1), Radius, _ Lösung ist das noch nicht. Um zu einer passablen
9. QBColor(15), 0 * bogen, Lösung zu kommen, müssen wir einige
67 * bogen Vorüberlegungen anstellen.
[Link] Sub
Nun zu unseren Säulen. Der erste Vorschlag ist, Wir müssen einen kleinen Exkurs über 'virtuelle
einfach die Line-Methode mit dem Parameter B, Koordinatensysteme' einlegen. Visual Basic
bzw. BF zu verwenden . ermöglicht mit der Methode SCALE die
1. Private Sub SäulenDiagramm() Einrichtung eigene Koordinatensysteme, wobei
2. [Link] auch andere Maßeinheiten eingesetzt werden
(100, 100)-(500, a), können – so können z.B. anstatt Twips auch cm
QBColor(5), BF verwendet werden. Für uns ist interessant, dass
3. [Link] wir den Koordinatenursprung verlegen können.
(600, 100)-(1000, b), Das Bildfeld hat über die Eigenschaften HEIGHT
QBColor(4), BF und WIDTH eine bestimmte Anzahl von Twips.
4. [Link] Wir können aber auch sagen, dass das Bildfeld
(1100, 100)-(1500, c), z.B. 1000 * 1000 Einheiten messen soll. Das
QBColor(3), BF Bildfeld behält seine Twips, aber virtuell - also
5. End Sub künstlich - können wir so tun, als gingen uns die
Die Prozedur ist selbsterklärend, hat aber Twips nichts an. Wir können alle Methoden und
eindeutig große Nachteile. Zunächst einmal Operationen auf der Grundlage 1000 * 1000
'hängen' die Säulen – das liegt daran, dass der durchführen. Das ist für Skalierungen sehr
Koordinaten-Nullpunkt in der linken oberen praktisch, weil komplizierte Umrechnungen
Ecke liegt, zum anderen passen die Säulen bei entfallen. Unsere virtuelle Skala oder das
großen Werten nicht mehr in das Bildfeld. Säulendiagramm werden durch Visual Basic vom
künstlichen zum normalen Zustand umgearbeitet.
1. Private Sub SäulenDiagramm()
2. [Link] (0, [Link])-([Link], 0)
3. [Link] = 2
4. [Link] = QBColor(0)
5. 'waagerechte Skala
6. [Link] (250, 250)-([Link] - 500, 250)
7. 'senkrechte Skala
8. [Link] (250, 250)-(250, [Link] - 500)
9. 'Säule a
10. [Link] (300, 250)-(800, a+250), QBColor(5), BF
11. 'Säule b
12. [Link] (850, 250)-(1350, b+250), QBColor(4), BF
13. 'Säule c
14. [Link] (1400, 250)-(1850, c+250), QBColor(3), BF
15. End Sub
Für unseren Zweck legen wir die Null-Punkte Variablen a, b und c gezeichnet, wobei zu den
der Koordinaten mit der Befehlszeile 2 in der Werten der Abstand der unteren Skala zum
obigen Prozedur in die linke untere Ecke und Bildfeldrand addiert werden muss.. Die
geben ein virtuelles Koordinatensystem von Koordinaten sind so abgemessen, dass sie nicht
[Link] * [Link] an den Rändern liegen. Welche Abstände man
vor, also die Höhe und Breite des Bildfeldes. zwischen den Säulen vornimmt, bzw. welche
Später werden wir eine andere Skalierung Breite die Säulen haben sollen, ist
ausprobieren. Geschmackssache. Soll die Skala noch eine
Der Code löst unser Problem zunächst einmal. Einteilung und Beschriftungen bekommen,
Mit seiner Hilfe wird gewissermaßen die müssen die Abstände größer als hier sein.
y-Achse in ihrer Richtung umgekehrt. Verwende erst einmal die angegebenen Werte
und probiere eigene Einstellungen.
Zu einem Säulendiagramm gehört eine Skala.
Zeile 6 und Zeile 8 zeichnen die Linien. Dann Du kannst jetzt zwischen dem Kreis- und dem
werden Rechtecke mit den Werten für die Säulendiagramm hin- und herschalten, neue
Simulationen
Computer sind durch ihre WASSERFLÖHE = 1000
Rechengeschwindigkeit vorzüglich in der Lage,
komplizierte Zusammenhänge schnell und VERMEHRUNGSRATE = 0, 3
übersichtlich darzustellen. Daher werden sie ja STERBERATE = 0, 2
auch für sogenannte Hochrechnungen verwendet. ABFALLPRODUKTE = 0 (zu Beginn des
Du kennst das sicherlich aus den Systems sind ja noch
Wahlberichterstattungen – aus wenigen keine vorhanden)
ausgewählten Daten wird auf das Endergebnis
hochgerechnet – und zwar mit erstaunlicher VERGIFTUNGSFAKTOR = 0,00005
Genauigkeit. VERGIFTUNGSRATE = 0, 05
Epidemie im Aquarium
Mathematisch ausgedrückt müssen
Im folgenden Programm soll der Computer die Gleichungssysteme programmiert werden. Für
Lebensqualität in einem Aquarium untersuchen. Mathematiker: die Grundlage sind
Angenommen, in einem Aquarium leben 1000 Differentialgleichungen.
Wasserflöhe. Diese Tiere vermehren sich mit 1. Sterberate = Sterberate +
einer bestimmten Vermehrungsrate, die aus der Vergiftungsfaktor *
Biologie bekannt ist. Der Nachwuchs vermehrt Abfallprodukte
sich, dessen Nachwuchs vermehrt sich usw. 2. Wasserflöhe = Wasserflöhe +
Ältere Tiere sterben. Auch die Lebenserwartung (Vermehrungsrate - Sterberate)
ist bekannt, man weiß, wie alt Wasserflöhe * Wasserflöhe
werden.
3. Abfallprodukte =
Nun kann man sich denken, dass die Wasserflöhe Abfallprodukte +
Abfallprodukte erzeugen, die das System Vergiftungsrate * Wasserflöhe
Aquarium belasten. Der Lebensraum wird also
zusehends vergiftet. Die Gleichungen müssen in dieser Reihenfolge
geschrieben werden, weil die errechneten Werte
Wie wirkt sich dieser Sachverhalt auf den
in der nächsten Gleichung eingesetzt werden.
Lebensraum aus und wie auf die
Lebewesenanzahl? Code
Der Computer soll in einer Tabelle die 1. In der FORM gibst du etwa 6300 * 6300
Entwicklung darstellen. Twips ein und als CAPTION Wasserflöhe.
Grundannahmen 2. Dann erstellst du eine BEFEHLSSCHALT-
FLÄCHE:
Es müssen einige Grundannahmen gemacht
werden. Wir unterstellen eine Vermehrungsrate NAME Name cmdStart
von 0, 3 Punkten und eine Sterberate von 0, 2. CAPTION Beschriftung &Start
Diese Werte haben sich in der Biologie als
annähernd realistisch herausgestellt. Im übrigen 3. Du deklarierst die Variablen im Allgemeinteil
geht es um das Prinzip, nicht um neue des nachfolgenden Code:
wissenschaftliche Erkenntnisse. Als
1 Option Explicit
Vergiftungsrate nehmen wir 0, 05 an; dadurch
2 Dim Wasserflöhe As Single
wird der Vergiftungsfaktor 0, 00005 ( das hängt
3 Dim Vermehrungsrate As
von der Wasserqualität ab).
Single
Die Gleichungen habe ich aus Biologiebüchern 4 Dim Sterberate As Single
übernommen und computergerecht umgesetzt. 5 Dim Abfallprodukte As Single
Es gibt also folgende Variablen: 6 Dim Vergiftungsfaktor As
Single
V. Private Sub
cmdUmwandeln_Click()
VI. Dim ursprung As String
VII. Dim temp As String
VIII. Dim i As Integer
IX. ursprung =
[Link]
X. temp = ursprung
XI. For i = 1 To Die Namen sind: LBLBETRAG, LBLMWS,
Len(ursprung) LBLGESAMTBETRAG
XII. Mid$(ursprung, i, 1) =
Mid$ _ Dann erstellst du die Befehlsschaltfläche
CMDENDE
(temp, (Len(temp) - i) + 1,
1)
XIII. Next i
XIV. [Link] =
ursprung
5. End Sub
-, 40 If/Then-Struktur, 29 Term, 27
Anfasser, 7 Index, 35 Tools, 8
Anweisung, 10; 13 Int, 20 Tooltip, 7
Apostroph, 25 Ja/Nein-Entscheidung, 29 true, 12
Array, 35 Kaufmännisch Und, 35 Twip, 43
Aspekt, 46 Kennung, 18 ungleich, 22
Bedingungsschleife, 31 kleiner als, 22 Unload, 40
Befehle, 10 Kommentarzeichen, 25 Variablendeklaration, 11
Bogenmaß, 47 Konstante, Visual Basic-, 27 Variablenfeld, 35
BorderColor, 43 Koordinatensysteme, 51 Variablentypen, 10
BorderStyle, 33; 43 KreisDiagramm, 50 Version, 5
BorderWidth, 43 Kreiszahl, 47 Visual Basic-Konstante, 27
Byte, 21 Label, 33 Wend, 30
Circle, 42; 45 Laufzeit, 7; 44 Werte, 7
Click-Ereignisse, 27 Line, 42 While-Wend, 30
Cls, 42 Line Input, 32 x-Achse, 43
Code, 7 Load, 39 y-Achse, 43
Const, 11 Load', 14 Zeichenkette, 11; 13
ControlBox, 33 Me, 43 'Zufallsgenerator', 35
[Link], 37 MsgBox, 26 zufall, 20
Debugging, 52 Objekt, 14 Zufallszahl, 35
Dim, 11 Objektliste, 7 Zählschleife, 31
Do-Schleife, 32 objektorientiert, 14
Dummy, 50 Pi, 47
Edition, 5 PictureBox, 16
Eigenschaften, 7 Platzhalter, 10
ElseIf, 29 Point, 42
End If, 29 Print, 40; 42
End Sub, 15 Private, 15
Entwicklungsphase, 7 Program-Listing, 17
Entwicklungszeit, 44 Projektfenster, 6
EOF, 32 Prozedur, 25
Ereignis, 14 Pset, 42
ereignisorientiert, 14 Punkteraster, 9
EXE, 9 Radius, 46
Exit Sub, 28 Rahmenfeld, 33
false, 12 Randomize, 20
Fester Dialog, 33 Rechteck, 45
Figur, 17 RGB, 45
FillColor, 46 Rnd, 20
FillStyle, 46 Scale, 51
Form, 7 Select/Case, 29
Formular, 8 SendKeys, 49
Frame, 33 Shape, 16
FreeFile, 32 Single, 20
GDI-Funktionen, 42 Skalierung, 51
gleich, 22 Sprungmarke, 28
Gradmaß, 47 Standardoperatoren, 12
Grafik-Steuerelemente, 42 String, 11
gruppieren, 17 Sub, 15
größer als, 22 Temp, 32