1. Ein Programm in Visual Basic hört nicht einfach auf, wenn die letzte Programmzeile ausgeführt wurde. Das Formular bzw. Hauptfenster bleibt weiter bestehen. Erst mit einem Klick auf Schliessen oder den Tasten [Alt]+[F4] ist das Programm abgeschlossen.
2. In Visual Basic umfasst die Erstellung und Bearbeitung eines Programms gleich mehrere Dateien. Deshalb bezeichnet man alles zusammen als Projekt.
3. Im Designfenster verteilst und ordnest du auf einem Formular deine Komponenten aus der Komponentenpalette (bis jetzt hast du nur die Schaltfläche benutzt). Im Editorfenster kümmerst du dich um die Methoden, damit das Programm laufen kann. Ohne den Programm- bzw. Quelltext führt nämlich eine Aktion wie z.B. das Klicken auf eine Schaltfläche zu keinem erkennbaren Ergebnis.
1. Hauptkomponente ist das Formular, auch MainWindow genannt. Daneben sind aus diesem Kapitel erst mal zwei weitere Komponenten bekannt: die Schalt- und die Anzeigefläche (Button und Label).
2. Ereignisse sind z.B. Mausklicks oder Tastendrücke. Mit Ereignissen lassen sich Methoden verknüpfen, die aktiviert werden, wenn ein Ereignis eintritt: So wird z.B. bei Mausklick die Methode button_Click aktiviert. Viele Methoden sind mit einem Objekt wie z.B. Formularen, Buttons, Labels oder anderen Komponenten verbunden.
3. Der Eigenschaft Text muss ein neuer Wert zugewiesen werden, z.B.
button.Content = "Lass mich!"
label.Content = "Das ist mir egal!"
1. Einen Versuch findest du im Projektordner mit dem Namen Hallo1A.
1. Das Projekt Horoskop1 bietet dir ein Gerüstprogramm mit zwölf beschrifteten Buttons, zu denen die button_Click-Methoden bereits existieren. Nur die passenden Vorhersagetexte musst du selber finden.
2. Dazu schaue mal in den Quelltext zum Projekt Mathe2.
1. Für Zensur wird eine zufällige Ganzzahl zwischen 1 und 6 erzeugt (wie bei einem Würfelspiel).
1. Vorschläge dazu findest du in Mathe1B bzw. in Mathe2A.
2. Schaue dir dazu mal das Projekt Mathe3 an.
1. Der Haken ist, dass auch »zu groß« ausgegeben wird, wenn die Zahl richtig ist: Das Gegenteil (Else) von < ist nämlich >=.
1. Dazu gibt es ein Angebot in raten4. (Wenn in anderen Bereichen als zwischen 0 und 10000 geraten werden soll, kannst du die Anfangswerte von Oben und Unten entsprechend ändern.)
1. Das Programm steckt in einer Endlos-Schleife fest: Weil das Kapital sich nie vermehren kann, wird daraus nie eine Million. Heraus kommt man da nur über Debuggen und Debuggen beenden.
2. Über die Eigenschaft SelectedIndex wird bei einem Listenfeld (ListBox) ermittelt, welcher Eintrag ausgewählt worden ist.
1. Eine Lösung steht in Million2.
2. Schaue dir dazu das Projekt Horoskop2 an. (Allerdings gibt’s auch hier nur ein Gerüst.)
3. Probiere mal das Projekt Zensur3 aus.
1. Wenn Optionsfelder oder Kontrollfelder in einem Formular zu einer Gruppe zusammengefasst sind, kann man bei Optionsfeldern (RadioButtons) immer nur eine Komponente einschalten. Bei Kontrollfeldern (CheckBoxes) dagegen lassen sich beliebig viele Komponenten einer Gruppe aktivieren.
1. Dazu findest du ein Gerüstprogramm im Projekt Horoskop3.
1. Ein Array besitzt eine starre Anzahl von Elementen, einer Sammlung kann man flexibel Elemente hinzufügen oder auch wieder daraus entfernen. Die Größe passt sich dabei jeweils an.
2. Eine Komponente besitzt den Fokus, wenn sie als erste in einer Ansammlung von Komponenten aktivierbar bzw. »ansprechbar« ist. Will man beim Programmlauf einer Komponente den Fokus geben, muss man sie erst anklicken.
3. Man benötigt dazu sogenannte Stream-Objekte z.B. vom Typ Reader oder Writer. Das Laden und Speichern von Daten geschieht dann über Read- oder Write-Methoden (z.B. für Textzeilen über ReadLine und WriteLine).
1. Dazu musst du dir mal die Projektdatei Prozent1 anschauen.
2. Eine Lösung ist in der Methode button1_Click des Projekts Klemp6a zu finden.
1. Der Grundwortschatz einer Programmiersprache ist in der Regel kompakt, also nicht sehr umfangreich. Will man den Wortschatz erweitern, gibt es Bibliotheken. Die werden von Visual Basic zum Teil automatisch eingebunden, manche muss man auch selbst importieren. Dazu ist die Imports-Anweisung da.
2. Zuerst erzeugt man eine Menü-Komponente. Über den Auflistungs-Editor lassen sich Menüeinträge (MenuItems) hinzufügen. Nach Doppelklick auf einen Menüeintrag kann man die damit verknüpfte Methode bearbeiten.
1. Der Ursprung (auch Null-Null-Punkt genannt) beginnt oben links in der Ecke der Anzeigefläche (z.B. Bildschirm).
2. Abgesehen von der anderen Schreibweise: Ein Objekt in der XAML-Datei ist bereits vorhanden, wenn das Formular auftaucht. Ein Objekt im Visual-Basic-Quelltext kann gleich zu Anfang (über Window_Loaded) oder irgendwann im Laufe des Programms erzeugt werden.
1. Die Lösung findest du im Projekt Grafik5A.
2. Schaue dir mal das Projekt Grafik6 an.
3. Die Lösung steckt bereits in TwinBtn1.
1. Ein Objekt wird immer über seine Eigenschaften animiert, das heißt, Eigenschaften wie Position, Größe, Farbe, Text, Schrift werden verändert. Dazu brauchst du einen Animationstyp, der zu dem Typ der Eigenschaft passt. Natürlich klappt das auch mit Komponenten.
2. Bei einer Klassenvereinbarung (mit Class KlassenName) wird sozusagen das Gerüst vereinbart: Eigenschaften und Methoden sind vorhanden. Aber erst nach einer Objektvereinbarung (mit Dim Objekt As KlassenName) können die Eigenschaften mit Werten gefüllt und die Methoden zum Leben erweckt werden. Wichtig ist, dass das Objekt vor dem »Gebrauch« über den Konstruktor New initialisiert wird!
1. Dazu solltest du mal das Projekt Movie2B öffnen.
2. Da gibt es eine Lösungsmöglichkeit in Projekt AnimBtn1.
1. Daten und Code bzw. alle Eigenschaften und Methoden eines Objekts werden zu einer Einheit zusammengefasst. Ein Zugriff von außen ist nur über das Objekt direkt möglich – wenn überhaupt.
2. Wird eine Klasse so vereinbart Class Name : Inherits Vorfahr, dann verfügt sie automatisch über alle Eigenschaften und Methoden des Vorfahren. Mit einer geeigneten Basisklasse lässt sich so eine komplette Klassenfamilie aufbauen, bei der die letzte Klasse in der Hierarchie alles erbt, was all ihre Vorfahren an Fähigkeiten zu bieten haben. (Voraussetzung für die Nutzung ist immer, dass es bei der Vererbung keine Einschränkung gibt – siehe dazu übernächstes Kapitel.)
1. Die Try-Catch-Strukturen stehen in Mathe7.
1. Erzeugen und benutzen kann man einen Zeitgeber z.B. mit diesen Anweisungen:
Dim Zeit As New DispatchTimer()
AddHandler Zeit.Tick, AddressOf timer_Tick
Zeit.Interval = New TimeSpan(Zeiteinheiten)
Zeit.Start()
Zeit.Stop()
2. Die Anweisung AddHandler verbindet ein Ereignis von Objekten (darunter auch Komponenten). Allerdings wird dazu nicht der Name, sondern die Adresse der Methode gebraucht, die sich mit AddressOf ermitteln lässt.
1. Die Variante mit Timer findet sich in Movie3A.
2. Das Projekt Movie4A enthält eine Option zum Drehen auf der Stelle.
3. In jede Richtung läuft die Figur im Projekt Movie5.
4. Eine Lösungsmöglichkeit findest du in Mathe8.
1. Zunächst scheinen beide gleichwertig zu sein. Aber nur Overrides macht es möglich, während der Laufzeit des Programms die passende Methode aufzurufen, wenn die Muttermethode mit Overridable virtuell vereinbart wurde.
2. Überschreiben kann man eine geerbte Methode durch eine neue. Auch überladene Methoden haben den gleichen Namen, sind aber in derselben Klasse definiert und unterscheiden sich z.B. in Typ oder Parameterliste. In der Regel ist hier der Zusatz Overloads angebracht.
1. Im Projekt Game3a verschwindet der Käfer und taucht gegenüber wieder auf.
2. Eine Lösungsmöglichkeit findest du in Game4A.