Leseprobe. »EinführungProgrammiergrundlagen für Visual BasicLösungen zu den Übungen« Inhaltsverzeichnis. Index. Der Autor. Leseprobe weiterempfehlen

Größe: px
Ab Seite anzeigen:

Download "Leseprobe. »EinführungProgrammiergrundlagen für Visual BasicLösungen zu den Übungen« Inhaltsverzeichnis. Index. Der Autor. Leseprobe weiterempfehlen"

Transkript

1 Wissen, wie s geht. Leseprobe Jeder kann programmieren lernen, und am besten geht das mit Visual Basic und diesem Einsteigerbuch! Thomas Theis führt Sie gekonnt in die Grundlagen von Visual Basic ein, von Variablen und Operatoren bis zu Verzweigungen und Steuerelementen. Diese Leseprobe bietet Ihnen zusätzlich zahlreiche Übungen und deren Lösungen.»EinführungProgrammiergrundlagen für Visual BasicLösungen zu den Übungen«Inhaltsverzeichnis Index Der Autor Leseprobe weiterempfehlen Thomas Theis Einstieg in Visual Basic 2017 Ideal für Programmieranfänger 536 Seiten, broschiert, 6. Auflage, Juli ,90 Euro, ISBN

2 Kapitel 1 Einführung 1 In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang mit der Entwicklungsumgebung und den Steuerelementen. Sie sind anschließend in der Lage, Ihr erstes eigenes Windows-Programm zu erstellen. Visual Basic 2017 ist der Nachfolger von Visual Basic 2015 und damit eine weitere Version von Visual Basic.NET. Hierbei handelt es sich um eine objektorientierte Programmiersprache. Mithilfe der Entwicklungsumgebung Visual Studio 2017 können Sie u. a. in Visual Basic programmieren. 1.1 Aufbau dieses Buchs Dieses Buch vermittelt Ihnen zunächst einen einfachen Einstieg in die Programmierung mit Visual Basic und Visual Studio Die Bearbeitung der Beispiele und das selbständige Lösen der vorliegenden Übungsaufgaben helfen dabei, da sie für schnelle Erfolgserlebnisse sorgen, die Sie zum Weitermachen motivieren sollen. In späteren Kapiteln werden auch die komplexen Themen vermittelt. Beispiele Von Anfang an wird mit anschaulichen Windows-Anwendungen gearbeitet. Die Grundlagen der Programmiersprache und die Standardelemente einer Windows-Anwendung, wie Sie sie bereits von anderen Windows-Programmen kennen, werden gemeinsam vermittelt. Die Anschaulichkeit einer Windows-Anwendung hilft Ihnen dabei, den eher theoretischen Hintergrund der Programmiersprache leichter zu verstehen. Grundlagen 1.2 Visual Studio 2017 Es wird die frei verfügbare Entwicklungsumgebung Visual Studio Community 2017 eingesetzt. Sie können sie unter Windows 7 bis Windows 10 nutzen. Diese Version von Visual Studio können Sie bei Microsoft herunterladen Community-Version 17

3 1 Einführung 1.4 Visual-Basic-Entwicklungsumgebung ( und auf Ihrem PC installieren. Eine Installationsanleitung finden Sie in Anhang A. Die Projekte in diesem Buch wurden unter Windows 10 bearbeitet. Auch die Screenshots sind unter dieser Windows-Version entstanden. 1.4 Visual-Basic-Entwicklungsumgebung Während der Projekterstellung lernen Sie Schritt für Schritt die Visual-Studio-Entwicklungsumgebung für Visual Basic kennen. 1 Visual Studio 2017 bietet eine komfortable Entwicklungsumgebung. Sie umfasst einen Editor zur Erstellung des Programmcodes, einen Compiler zur Erstellung der ausführbaren Programme, einen Debugger zur Fehlersuche und vieles mehr. Zur Installation verweise ich auf den Anhang. Noch eine Anmerkung in eigener Sache: Für die Hilfe bei der Erstellung dieses Buchs bedanke ich mich beim Team des Rheinwerk Verlags, besonders bei Anne Scheibe. Thomas Theis 1.3 Mein erstes Windows-Programm Anhand eines ersten Projekts werden die Schritte durchlaufen, die zur Erstellung eines einfachen Programms mithilfe von Visual Basic notwendig sind. Das Programm soll nach dem Aufruf zunächst aussehen wie in Abbildung Ein neues Projekt Nach dem Aufruf des Programms Visual Studio Community 2017 müssen Sie zur Erstellung eines neuen Projekts den Menüpunkt Datei Neu Projekt ausführen. Anschließend wählen Sie in der Kategorie Installiert Vorlagen Andere Sprachen Visual Basic die Vorlage Windows Forms- App aus. Als Projektname wird WindowsApp1 vorgeschlagen. Sie sollten ihn ändern, z. B. in MeinErstes. Nach Betätigung der Schaltfläche OK erscheinen einige Elemente der Entwicklungsumgebung. Folgende Elemente sind besonders wichtig: Das Benutzerformular (engl.: Form) enthält die Oberfläche für den Benutzer des Programms (siehe Abbildung 1.3). Form Abbildung 1.3 Benutzerformular Abbildung 1.1 Erstes Programm, nach dem Aufruf Nach Betätigung des Buttons Hallo soll sich der Text in der obersten Zeile verändern, siehe Abbildung 1.2. Abbildung 1.2 Nach Betätigung des Buttons»Hallo«Der Werkzeugkasten (engl.: Toolbox) enthält die Steuerelemente für den Benutzer, mit denen er den Ablauf des Programms steuern kann. Sie werden vom Programmentwickler in das Formular eingefügt (siehe Abbildung 1.4). Sollten in der Toolbox keine Steuerelemente angezeigt werden, klicken Sie einmal auf das Benutzerformular und anschließend wieder auf die Toolbox. Weitere Registerkarten, zum Beispiel Server- Explorer und Datenquellen, werden nicht benötigt und können jeweils über das Kreuz oben rechts ausgeblendet werden. Das Eigenschaften-Fenster (engl.: Properties Window) dient zum Anzeigen und Ändern der Eigenschaften von Steuerelementen innerhalb des Formulars durch den Programmentwickler (siehe Abbildung 1.5). Ich 18 19

4 1 Einführung 1.4 Visual-Basic-Entwicklungsumgebung empfehle Ihnen, sich die Eigenschaften in alphabetischer Reihenfolge anzeigen zu lassen. Dazu einfach das zweite Symbol von links, unter Form1, betätigen. Sollten der Werkzeugkasten, das Eigenschaften-Fenster oder der Projektmappen-Explorer nicht angezeigt werden, können Sie das betreffende Element über das Menü Ansicht einblenden. Sollte das Formular einmal nicht sichtbar sein, können Sie es über einen Doppelklick auf den Namen Elemente anzeigen 1 (Form1.vb) im Projektmappen-Explorer einblenden. Sollten die Eigenschaften eines Steuerelements nicht im bereits sichtbaren Eigenschaften- Fenster angezeigt werden, markieren Sie zunächst den Namen der Formulardatei (Form1.vb) im Projektmappen-Explorer und anschließend das betreffende Steuerelement. Zunächst werden nur einfache Programme mit wenigen Elementen geschrieben, daher benötigen Sie den Projektmappen-Explorer noch nicht. Es empfiehlt sich, das Eigenschaften-Fenster nach oben zu vergrößern. Abbildung 1.4 Werkzeugkasten, mit Kategorien von Steuerelementen Einfügen von Steuerelementen Zunächst sollen drei Steuerelemente in das Formular eingefügt werden: Label, Button ein Bezeichnungsfeld (Label) und zwei Befehlsschaltflächen (Buttons). Ein Bezeichnungsfeld dient im Allgemeinen dazu, feste oder veränderliche Texte auf der Benutzeroberfläche anzuzeigen. In diesem Programm soll das Label einen Text anzeigen. Ein Button dient zum Starten bestimmter Programmteile oder, allgemeiner ausgedrückt, zum Auslösen von Ereignissen. In diesem Programm sollen die Buttons den Text anzeigen bzw. das Abbildung 1.5 Eigenschaften-Fenster Programm beenden. Der Projektmappen-Explorer (engl.: Solution Explorer) zeigt das geöff- Um ein Steuerelement einzufügen, ziehen Sie es mithilfe der Maus vom Werkzeugkasten an die gewünschte Stelle im Formular. Alle Steuerele- Allgemeine Steuerelemente nete Projekt und die darin vorhandenen Elemente (siehe Abbildung 1.6). mente finden sich im Werkzeugkasten unter Alle Windows Forms. Übersichtlicher ist der Zugriff über Allgemeine Steuerelemente (engl.: Common Controls), siehe Abbildung 1.7. Abbildung 1.6 Projektmappen-Explorer Abbildung 1.7 Werkzeugkasten, Kategorie»Allgemeine Steuerelemente«20 21

5 1 Einführung 1.4 Visual-Basic-Entwicklungsumgebung Steuerelement auswählen Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fügt es ebenfalls in die Form ein. Anschließend können Ort und Größe noch verändert werden. Dazu müssen Sie das betreffende Steuerelement vorher durch Anklicken ausgewählt haben, siehe Abbildung 1.8. Ein überflüssiges Steuerelement können Sie durch Auswählen und Drücken der Taste (Entf) entfernen. steht der Name der Eigenschaft, in der rechten Spalte ihr aktueller Wert. Die Eigenschaft (Name) steht am Anfang der Liste der Eigenschaften. Die betreffende Zeile wird durch Anklicken ausgewählt, und der neue Name wird eingegeben. Nach Bestätigung mit der Taste ( ) ist die Eigenschaft geändert, siehe Abbildung Abbildung 1.8 Ausgewählter Button Die Größe und andere Eigenschaften des Formulars selbst können auch Abbildung 1.9 Button, nach der Namensänderung verändert werden. Dazu müssen Sie es vorher durch Anklicken einer freien Stelle auswählen. Die Aufschrift von Buttons, Labels und Formularen ist in der Eigenschaft Text angegeben. Sobald diese Eigenschaft verändert wird, erscheint die ver- Eigenschaft Text änderte Aufschrift in dem betreffenden Steuerelement. Auch den Namen Arbeiten mit dem Eigenschaften-Fenster Die eingefügten Steuerelemente haben zunächst einheitliche Namen und Aufschriften, diese sollten allerdings zur einfacheren Programmentwicklung geändert werden. Es gibt bestimmte Namenskonventionen, die die Lesbarkeit erleichtern: Die Namen beinhalten den Typ (mit drei Buchstaben abgekürzt) und die Aufgabe des Steuerelements (jeweils mit großem Anfangsbuchstaben). Aus den Namen der Steuerelemente ergeben sich auch die Namen der sogenannten Ereignisprozeduren, ebenfalls mit gro- und die Aufschrift des Formulars sollten Sie ändern. Im Folgenden sind die gewünschten Eigenschaften für die Steuerelemente dieses Programms in Tabellenform angegeben, siehe Tabelle 1.1. Zu diesem Zeitpunkt legen Sie den Startzustand fest, also die Eigenschaften, welche die Steuerelemente zu Beginn des Programms bzw. eventuell während des gesamten Programms haben sollen. Viele Eigenschaften können Sie auch während der Laufzeit des Programms durch den Programmcode verändern lassen. Startzustand Cmd, Txt, Lbl,... ßem Anfangsbuchstaben, siehe Abschnitt Seit Visual Studio 2017 wird stärker auf die Einhaltung der Namenskonventionen geachtet. Ein Button (eigentlich: Command Button), der die Anzeige der Zeit auslösen soll, wird beispielsweise mit CmdZeit bezeichnet. Weitere Vorsilben sind Typ Eigenschaft Einstellung Formular Text Mein Erstes Button Name CmdHallo Txt (Textfeld/TextBox), Lbl (Bezeichnungsfeld/Label), Opt (Optionsschaltfläche/RadioButton), Frm (Formular/Form) und Chk (Kontrollkästchen/ CheckBox). Text Hallo Button Name CmdEnde Zur Änderung des Namens eines Steuerelementes müssen Sie es zunächst Text Ende auswählen. Die Auswahl kann entweder durch Anklicken des Steuerele- Label Name LblAnzeige Eigenschaften- Fenster ments auf dem Formular oder durch Auswahl aus der Liste am oberen Ende des Eigenschaften-Fensters geschehen. Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewählten Steuerelements angezeigt. Die Liste ist zweispaltig: In der linken Spalte Text BorderStyle Tabelle 1.1 Steuerelemente mit Eigenschaften (leer) FixedSingle 22 23

6 1 Einführung 1.4 Visual-Basic-Entwicklungsumgebung Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf FixedSingle einen Rahmen. Zur Änderung auf FixedSingle müssen Sie die Liste bei der Eigenschaft aufklappen und den betreffenden Eintrag auswählen, siehe Abbildung Zur Änderung einiger Eigenschaften müssen Sie eventuell sogar ein Dialogfeld aufrufen Das Codefenster Der Ablauf eines Windows-Programms wird im Wesentlichen durch das Auslösen von Ereignissen durch den Benutzer gesteuert. Er löst z. B. die Anzeige des Texts Hallo aus, indem er auf den Button Hallo klickt. Sie als Entwickler müssen dafür sorgen, dass aufgrund dieses Ereignisses der ge- Ereignis 1 wünschte Text angezeigt wird. Zu diesem Zweck schreiben Sie Programmcode und ordnen diesen Code dem Ereignis zu. Der Code wird in einer Ereignisprozedur abgelegt. Zum Schreiben einer Ereignisprozedur führen Sie am besten einen Doppel- Ereignisprozedur klick auf das betreffende Steuerelement aus. Es erscheint das Codefenster. Zwischen der Formular- und der Code-Ansicht können Sie anschließend über die Menüpunkte Ansicht Code bzw. Ansicht Designer hin- und herschalten. Das ist auch über die Registerkarten oberhalb des Formulars bzw. des Codefensters möglich, siehe Abbildung Abbildung 1.10 Label, nach der Änderung von Name und BorderStyle Im Label soll zunächst der Text (leer) erscheinen. Hierzu müssen Sie den Abbildung 1.11 Registerkarten Liste der Steuerelemente vorhandenen Text durch Anklicken auswählen und ändern. Sie finden alle in diesem Formular vorhandenen Steuerelemente in der Liste, die sich am oberen Ende des Eigenschaften-Fensters öffnen lässt. Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe: Die Steuerelemente des gleichen Typs stehen direkt untereinander. Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Codefenster folgende Einträge: Private Sub CmdHallo_Click(sender As Object, e As EventArgs) Handles CmdHallo.Click Speichern eines Projekts Listing 1.1 Projekt»MeinErstes«, Button»Hallo«, ohne Code Alles speichern Die Daten eines Visual-Basic-Projekts werden in verschiedenen Dateien gespeichert. Zum Speichern des gesamten Projekts wird der Menüpunkt Innerhalb der Ereignisprozedur ist der Platz für den eigenen Programmcode. Datei Alles Speichern verwendet. Diesen Vorgang sollten Sie in regelmäßigen Abständen durchführen, damit keine Änderungen verloren gehen können. VB.NET ist eine objektorientierte Sprache. Ein wichtiges Element objektorientierter Sprachen sind Klassen. Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der Klasse Form1 (zwischen Public Class und End Class Die in diesem Skript angegebenen Namen dienen als Empfehlung. Sie erleichtern die eindeutige Orientierung und das spätere Auffinden von alten Programmen. Class). Auf die Einzelheiten der Objektorientierung wird zu einem späteren Zeitpunkt eingegangen, da das hier noch nicht notwendig ist und eher verwirren würde

7 1 Einführung 1.4 Visual-Basic-Entwicklungsumgebung Sub Der Programmcode der Ereignisprozedur steht später zwischen Private Sub und. Der Name der Prozedur besteht aus den zwei Teilen Name des Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen ausgewertet und der Variablen, der Objekt-Eigenschaft oder der Steuer- Zuweisung 1 Steuerelements und Ereignis. elementeigenschaft links vom Gleichheitszeichen zugewiesen. Die Zei- Zeilenumbruch Die Anweisung Private Sub... ist recht lang, daher wird sie auf mehrere Zeilen verteilt. Visual Basic ermöglicht Zeilenumbrüche an bestimmten Stellen einer Anweisung auf einfache Art und Weise. Das erhöht wesentlich chenkette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mithilfe der Schreibweise Steuerelement.Eigenschaft = Wert zugewiesen. Das führt zur Anzeige des Werts. die Lesbarkeit von Programmen. Aus Druckgründen werden in diesem Buch häufig längere Anweisungen auf mehrere Zeilen verteilt. Die Regeln für Zeilenumbrüche finden Sie in Abschnitt Der anfänglich ausgeführte Doppelklick führt immer zu dem Ereignis, das am häufigsten mit dem betreffenden Steuerelement verbunden wird. Das ist beim Button natürlich das Ereignis Click. Zu einem Steuerelement gibt es aber auch noch andere mögliche Ereignisse. Oberhalb von Public Class... und von Private Sub... erscheinen seit Visual Studio 2015 automatisch weitere Informationen zur Klasse Form1 Nach dem Wechsel auf die Formularansicht können Sie das nächste Steuerelement auswählen, für das eine Ereignisprozedur geschrieben werden soll. Innerhalb des Codefensters können Sie Text mit den gängigen Methoden der Textverarbeitung editieren, kopieren, verschieben und löschen. Sollten Sie bereits bei der Eingabe des Programmcodes Syntaxfehler gemacht haben, wird das angezeigt. Sie sollten den Code unmittelbar entsprechend korrigieren. In der Ereignisprozedur CmdEnde_Click() soll der folgende Code stehen: Code editieren Syntaxfehler und ihren Elementen in kleiner grauer Schrift, wie zum Beispiel 0 references oder 2 references. Auch sie können wir zunächst ignorieren Schreiben von Programmcode In der Prozedur CmdHallo_Click() soll eine Befehlszeile eingefügt werden, Private Sub CmdEnde_Click(sender As Object, e As EventArgs) Handles CmdEnde.Click Close() Listing 1.3 Projekt»MeinErstes«, Button»Ende«sodass sie anschließend wie folgt aussieht: Die Methode Close() dient zum Schließen eines Formulars. Da es sich um Private Sub CmdHallo_Click(sender As Object, e As EventArgs) Handles CmdHallo.Click LblAnzeige.Text = "Hallo" Listing 1.2 Projekt»MeinErstes«, Button»Hallo«, mit Code das einzige Formular dieses Projekts handelt, wird dadurch das Programm beendet und die gesamte Windows-Anwendung geschlossen. Das aktuelle Objekt einer Klasse wird mit Me bezeichnet. Da wir uns innerhalb der Klasse für das aktuelle Formular befinden, bezieht sich Me auf dieses Formular. Die Anweisung zum Schließen dieses Formulars könnte also auch lauten: Me.Close(). In vielen Fällen ist Me allerdings überflüssig und kann weggelassen werden. Me Anweisung Der Text muss in Anführungszeichen gesetzt werden, da Visual Basic sonst annimmt, dass es sich um eine Variable mit dem Namen Hallo handelt. Der Inhalt einer Prozedur setzt sich aus einzelnen Anweisungen zusammen, die nacheinander ausgeführt werden. Die vorliegende Prozedur enthält nur eine Anweisung; in ihr erfolgt mithilfe des Gleichheitszeichens eine Zuweisung. Seit der Version 2015 von Visual Studio werden überflüssige Elemente im Programmcode deutlicher gekennzeichnet, indem sie in grauer Schriftfarbe dargestellt werden. Falls sich der Cursor in der betreffenden Zeile befindet, erscheint links von der Zeile eine gelbe Glühlampe. Platzieren Sie die Maus über dieser Glühlampe, wird der Zugang zu Hinweisen ermöglicht, wie die überflüssigen Elemente entfernt werden können. In Abbildung 1.12 sehen Sie ein Beispiel: Im Programmcode wurde Me.Close() statt Graue Schriftfarbe Close() notiert

8 1 Einführung 1.4 Visual-Basic-Entwicklungsumgebung anschließend das entsprechende Symbol im linken Bereich der Symbolleiste anklicken, siehe Abbildung Rechts daneben befindet sich das Symbol, das die Auskommentierung nach dem Test wieder rückgängig macht. 1 Abbildung 1.13 Kommentar ein/aus Starten, Ausführen und Beenden des Programms Abbildung 1.12»Me«kann entfernt werden. Nach dem Einfügen der Steuerelemente und dem Erstellen der Ereignis- Programm starten prozeduren ist das Programm fertig, und Sie können es starten. Dazu wird Das waren Beispiele zur Änderung der Eigenschaften eines Steuerelements zur Laufzeit des Programms durch Programmcode. Sie erinnern sich: Zu Beginn hatten wir die Starteigenschaften der Steuerelemente im Eigenschaften-Fenster eingestellt. der Starten-Button in der Symbolleiste (dreieckiger grüner Pfeil nach rechts) betätigt. Alternativ starten Sie das Programm über die Funktionstaste (F5) oder den Menüpunkt Debuggen Debugging starten. Das Formular erscheint, das Betätigen der Buttons führt zum programmierten Ergebnis. Einfaches Hochkomma Kommentare Bei längeren Programmen mit vielen Anweisungen gehört es zum guten Programmierstil, Kommentarzeilen zu schreiben. In diesen Zeilen werden einzelne Anweisungen oder auch längere Blöcke von Anweisungen erläutert, damit Sie selbst oder auch ein anderer Programmierer sie später leichter verstehen. Eine Kommentarzeile beginnt mit einem einfachen Hochkomma. Alle Zeichen bis zum Ende der Zeile werden als Kommentar angesehen und folglich nicht übersetzt oder ausgeführt. Zur regulären Beendigung eines Programms dient der Button mit der Aufschrift Ende. Möchten Sie ein Programm während des Verlaufs abbrechen, können Sie auch den End-Button in der Symbolleiste (rotes Quadrat) betätigen. Tritt während der Ausführung eines Programms ein Fehler auf, wird das angezeigt, und das Codefenster zeigt die entsprechende Ereignisprozedur sowie die fehlerhafte Zeile an. Beenden Sie das Programm, korrigieren Sie den Code und starten Sie das Programm wieder. Programm beenden Fehler Der folgende Programmcode wird um eine Kommentarzeile ergänzt: Private Sub CmdEnde_Click(sender As Object, e As EventArgs) Handles CmdEnde.Click ' Schließt die Anwendung Close() Es wird empfohlen, das Programm bereits während der Entwicklung mehrmals durch Aufruf zu testen und nicht erst, wenn das Programm vollständig erstellt worden ist. Geeignete Zeitpunkte sind z. B. nach dem Einfügen der Steuerelemente und dem Zuweisen der Eigenschaften, die sie zu Programmbeginn haben sollen, nach dem Erstellen jeder Ereignisprozedur. Programm testen Listing 1.4 Projekt»MeinErstes«, Button»Ende«, mit Kommentar Code auskommentieren Ein kleiner Trick: Sollen bestimmte Programmzeilen für einen Test des Programms kurzfristig nicht ausgeführt werden, können Sie sie auskommentieren, indem Sie das Hochkomma vor die betreffenden Zeilen setzen. Das geht sehr schnell, indem Sie die betreffende(n) Zeile(n) markieren und Ausführbares Programm Nach erfolgreichem Test des Programms könnten Sie auch die ausführbare Datei (.exe-datei) außerhalb der Entwicklungsumgebung aufrufen. Haben Sie an den Grundeinstellungen nichts verändert und die vorgeschlagenen Namen verwendet, findet sich die zugehörige.exe-datei des.exe-datei 28 29

9 1 Einführung 1.5 Arbeiten mit Steuerelementen aktuellen Projekts im Verzeichnis Dokumente\Visual Studio 2017\Projects\MeinErstes\MeinErstes\bin\Debug. Sie können das Programm also im Windows-Explorer direkt über Doppelklick starten Regeln für Zeilenumbrüche Visual Basic ermöglicht Zeilenumbrüche an bestimmten Stellen einer Anweisung auf einfache Art und Weise. Das erhöht die Lesbarkeit des Pro- Zeilenumbruch 1 Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC grammcodes. Einige Regeln wurden bereits im ersten Programm ange- ist etwas aufwendiger. Der Vorgang wird im Anhang beschrieben. wandt. Hier noch einmal die Prozedur CmdHallo_Click(): Projekt schließen Projekt schließen, Projekt öffnen Sie können ein Projekt über den Menüpunkt Datei Projektmappe schließen schließen. Falls Sie Veränderungen vorgenommen haben, werden Sie gefragt, ob Sie diese Änderungen speichern möchten. Private Sub CmdHallo_Click(sender As Object, e As EventArgs) Handles CmdHallo.Click LblAnzeige.Text = "Hallo" Listing 1.5 Projekt»MeinErstes«, Ausschnitt Projekt öffnen Möchten Sie die Projektdaten sicherheitshalber zwischendurch speichern, ist das über den Menüpunkt Datei Alles speichern möglich. Das ist bei längeren Entwicklungsphasen sehr zu empfehlen. Zum Öffnen eines vorhandenen Projekts wählen Sie den Menüpunkt Datei öffnen Projekt. Im darauffolgenden Dialogfeld Projekt öff- Ein Zeilenumbruch ist möglich: nach einer öffnenden Klammer, siehe erste Prozedurzeile vor einer schließenden Klammer, siehe dritte Prozedurzeile nach einem Komma, siehe zweite Prozedurzeile Regeln nen wählen Sie zunächst das gewünschte Projektverzeichnis aus und anschließend die gleichnamige Datei mit der Endung.sln. Alle Beispielprojekte finden Sie auf unter»materialien zum Buch«zum Download. Sie können diese Projekte auf Ihre Festplatte kopieren. Sollte eines der Projekte einmal nicht gestartet werden können, sollten Sie es neu über den Menüpunkt Erstellen Projektmappe neu erstellen erstellen. Außerdem wäre ein Zeilenumbruch z. B. auch möglich: nach den meisten Operatoren, also auch nach dem Zuweisungsoperator = (siehe Abschnitt 2.2.5) oder dem Verkettungsoperator & (siehe Abschnitt 1.5.5). nach einem Punkt hinter einem Objektnamen, also auch nach dem Punkt hinter dem Objektnamen LblAnzeige Auf keinen Fall dürfen Zeilenumbrüche innerhalb einer Zeichenkette Übung»UName« Übung Erstellen Sie ein Windows-Programm mit einem Formular, das zwei Buttons und ein Label beinhaltet, siehe Abbildung Bei Betätigung des ersten Buttons erscheint im Label Ihr Name. Bei Betätigung des zweiten Buttons wird das Programm beendet. Namensvorschläge: Projektname durchgeführt werden. Weitere Möglichkeiten für Zeilenumbrüche werden jeweils an der passenden Stelle erläutert. Falls Sie das Zeichen _ (Unterstrich) am Ende einer Zeile notieren, kann anschließend in jedem Fall ein Zeilenumbruch durchgeführt werden, unabhängig von den oben genannten Regeln. Unterstrich UName, Buttons CmdMyName und CmdEnde, Label LblMyName. 1.5 Arbeiten mit Steuerelementen Steuerelemente formatieren Zur besseren Anordnung der Steuerelemente auf dem Formular können Hilfslinien Sie sie mithilfe der Maus nach Augenmaß verschieben. Dabei erscheinen Abbildung 1.14 Übung UName 30 31

10 1 Einführung 1.5 Arbeiten mit Steuerelementen automatisch Hilfslinien, falls das aktuelle Element horizontal oder vertikal parallel zu einem anderen Element steht. Sie können alle Steuerelemente gleichzeitig gegen versehentliches Verschieben absichern (Menü Format Steuerelemente Sperren). Diese 1 Mehrere Steuerelemente markieren Weitere Möglichkeiten bieten die Menüpunkte im Menü Format. In vielen Fällen müssen vorher mehrere Steuerelemente auf einmal markiert werden, siehe Abbildung Sperrung gilt nur während der Entwicklung des Programms. Abbildung 1.16 zeigt ein Formular mit drei Buttons, die alle links ausgerichtet sind und im gleichen vertikalen Abstand voneinander stehen. Abbildung 1.15 Mehrere markierte Elemente Das geschieht entweder Abbildung 1.16 Nach der Formatierung durch Umrahmung der Elemente mit einem Rechteck, nachdem Sie zuvor das Steuerelement (Maus-)Zeiger ausgewählt haben, oder Übung Laden Sie das Projekt MeinErstes aus dem vorherigen Abschnitt, markieren durch Mehrfachauswahl, indem ab dem zweiten auszuwählenden Steuerelement die (ª)-Taste (wie für Großbuchstaben) oder die (Strg)-Taste gedrückt wird. Sie darin mehrere Steuerelemente und testen Sie die einzelnen Möglichkeiten des Format-Menüs. Menü»Format«Über das Menü Format haben Sie anschließend folgende Möglichkeiten zur Anpassung der Steuerelemente: Die ausgewählten Steuerelemente können horizontal oder vertikal zueinander ausgerichtet werden (Menü Format Ausrichten) Steuerelemente kopieren Zur schnelleren Erzeugung eines Projekts können vorhandene Steuerelemente einschließlich aller ihrer Eigenschaften kopiert werden. Markieren Sie hierzu die gewünschten Steuerelemente und kopieren Sie sie entweder Steuerelemente kopieren Einheitliche Abstände Die horizontalen und/oder vertikalen Dimensionen der ausgewählten Steuerelemente können angeglichen werden (Menü Format Größe angleichen). Die horizontalen und vertikalen Abstände zwischen den ausgewählten Steuerelementen können angeglichen, vergrößert, verkleinert oder entfernt werden (Menü Format Horizontaler Abstand/Vertikaler Abstand). über das Menü Bearbeiten Kopieren und das Menü Bearbeiten Einfügen oder mit den Tasten (Strg) + (C) und (Strg) + (V). Anschließend sollten die neu erzeugten Steuerelemente direkt umbenannt und an der gewünschten Stelle angeordnet werden. Die Steuerelemente können horizontal oder vertikal innerhalb des Formulars zentriert werden (Menü Format Auf Formular zentrieren). Übung Laden Sie das Projekt MeinErstes aus Abschnitt 1.4 und kopieren Sie einzelne Sollten sich die Steuerelemente teilweise überlappen, können Sie einzelne Steuerelemente in den Vorder- bzw. Hintergrund schieben (Menü Format Reihenfolge). Steuerelemente. Kontrollieren Sie anschließend die Liste der vorhandenen Steuerelemente im Eigenschaften-Fenster auf einheitliche Namensgebung

11 1 Einführung 1.5 Arbeiten mit Steuerelementen Size, Location Eigenschaften zur Laufzeit ändern Steuerelemente haben die Eigenschaften Size (mit den Komponenten Width und Height) und Location (mit den Komponenten X und Y) zur Angabe von Größe und Position. X und Y geben die Koordinaten der oberen Private Sub CmdGroesseAbs_Click(...) Handles... CmdTest.Size = New Size(50, 100) 1 linken Ecke des Steuerelements an, gemessen von der oberen linken Ecke Listing 1.6 Projekt»Steuerelemente«des umgebenden Elements (meist das Formular). Alle Werte werden in Pixeln gemessen. Zur Erläuterung: Alle diese Eigenschaften können sowohl während der Entwicklungszeit als auch während der Laufzeit eines Projekts verändert werden. Zur Änderung während der Entwicklungszeit können Sie die Eigenschaft wie gewohnt im Eigenschaften-Fenster eingeben. Als Beispiel für Änderungen während der Laufzeit soll das folgende Programm (Projekt Steuerelemente) dienen, siehe Abbildung Abbildung 1.17 Position und Größe bestimmen Der Programmcode: Private Sub CmdPositionRel_Click(...) Handles... CmdTest.Location = New Point( CmdTest.Location.X + 20, CmdTest.Location.Y) Private Sub CmdPositionAbs_Click(...) Handles... CmdTest.Location = New Point(100, 200) Private Sub CmdGroesseRel_Click(...) Handles... CmdTest.Size = New Size( CmdTest.Size.Width + 20, CmdTest.Size.Height) Der Kopf der einzelnen Prozeduren wird aus Gründen der Übersichtlichkeit jeweils in verkürzter Form abgebildet. Das wird bei den meisten nachfolgenden Beispielen ebenfalls so sein, außer wenn es genau auf die Inhalte des Prozedurkopfs ankommt. Das Formular enthält fünf Buttons. Die oberen vier Buttons dienen der Veränderung von Position und Größe des fünften Buttons. Die Position eines Elements kann relativ zur aktuellen Position oder auf absolute Werte eingestellt werden. Das Gleiche gilt für die Größe eines Elements. Bei beiden Angaben handelt es sich um Wertepaare (X/Y bzw. Width/ Height). Zur Einstellung der Position dient die Struktur Point. Ein Objekt dieser Struktur liefert ein Wertepaar. In diesem Programm wird mit New jeweils ein neues Objekt der Struktur Point erzeugt, um das Wertepaar bereitzustellen. Bei Betätigung des Buttons Position Abs wird die Position des fünften Buttons auf die Werte X=100 und Y=200 gestellt, gemessen von der linken oberen Ecke des Formulars. Bei Betätigung des Buttons Position Rel wird die Position des fünften Buttons auf die Werte X = CmdTest.Location.X + 20 und Y = CmdTest.Location.Y gestellt. Bei X wird also der alte Wert der Komponente X um 20 erhöht, das Element bewegt sich nach rechts. Bei Y wird der alte Wert der Komponente Y nicht verändert, das Element bewegt sich nicht nach oben oder unten. Zur Einstellung der Größe dient die Struktur Size. Bei Betätigung des Buttons Größe Abs wird die Größe des fünften Buttons auf die Werte Width = 50 und Height = 100 gestellt. Bei Betätigung des Buttons Größe Rel wird die Größe des fünften Buttons auf die Werte Width = CmdTest.Size.Width + 20 und Height = Verkürzte Darstellung New Point X, Y Width, Height 34 35

12 1 Einführung 1.5 Arbeiten mit Steuerelementen CmdTest.Size.Height gestellt. Bei Width wird also der alte Wert der Komponente Width um 20 erhöht, das Element wird breiter. Bei Height wird der alte Wert der Komponente Height nicht modifiziert, das Element verändert seine Höhe nicht. Nach einigen Klicks sieht das Formular aus wie in Abbildung Abbildung 1.18 Veränderung von Eigenschaften zur Laufzeit sen Sie zusätzlich einen Zeilenvorschub mithilfe der integrierten Visual- Basic-Konstante vbcrlf eingeben. Nachfolgend wird das Formular des Projekts Steuerelemente vergrößert, zum Beispiel auf Anschließend wird es um ein Label ergänzt, in dem die aktuelle Position und Größe des Buttons angezeigt wird. Das soll nach Betätigung des Buttons Anzeige geschehen: Private Sub CmdAnzeige_Click(...) Handles... LblAnzeige.Text = "Position: X: " & CmdTest.Location.X & ", Y: " & CmdTest.Location.Y & vbcrlf & "Größe: Breite: " & CmdTest.Size.Width & ", Höhe: " & CmdTest.Size.Height Listing 1.7 Projekt»Steuerelemente«, Anzeige Vergabe und Verwendung von Namen Beachten Sie in allen Programmen, dass jedes Steuerelement seinen eigenen, eindeutigen Namen hat und immer mit diesem Namen angesprochen werden muss. Es passiert erfahrungsgemäß besonders am Anfang häufig, dass ein Programm nicht zum gewünschten Erfolg führt, weil ein nicht vorhandener Name verwendet wird. In diesem Zusammenhang weise ich noch einmal auf die Namenskonventionen hin: Nach einigen Klicks und der Betätigung des Buttons Anzeige sieht das Formular aus wie in Abbildung Buttons sollten Namen wie z. B. CmdEnde, CmdAnzeigen, CmdBerechnen usw. haben. Labels sollten Namen wie z. B. LblAnzeige, LblName, LblUhrzeit, LblBeginn- Datum haben. Diese Namen liefern eine eindeutige Information über Typ und Funktion des Steuerelements. Falls Sie beim Schreiben von Programmcode anschließend diese Namen z. B. vollständig in Kleinbuchstaben eingeben, werden sie nach Verlassen der Zeile automatisch korrigiert. Daran können Sie schnell erkennen, ob Sie tatsächlich ein vorhandenes Steuerelement verwendet haben Verknüpfung von Texten, mehrzeilige Texte Abbildung 1.19 Anzeige der Eigenschaften Eigenschaft BackColor, Farben allgemein Die Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back- Color festgelegt. Dabei können Sie die Farbe zur Entwicklungszeit leicht mithilfe einer Farbpalette oder aus Systemfarben auswählen. Hintergrundfarben und andere Farben können auch zur Laufzeit eingestellt werden, dabei verwenden Sie Farbwerte. Diese Farbwerte können Sie über die Struktur Color auswählen. Ein Beispiel, ebenfalls im Projekt Steuerelemente: BackColor Color & und vbcrlf Es lassen sich mehrere Texte in einer Ausgabe mithilfe des Zeichens & miteinander verknüpfen. Falls Sie eine mehrzeilige Ausgabe wünschen, müs- Private Sub CmdFarbe_Click(...) Handles... BackColor = Color.Yellow 36 37

13 1 Einführung LblAnzeige.BackColor = Color.FromArgb(192, 255, 0) Listing 1.8 Projekt»Steuerelemente«, Anzeige der Farbe Zur Erläuterung: 왘 Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften, z. B. Yellow. Der Wert kann der Eigenschaft BackColor des Steuerelements zugewiesen werden, hier ist es das Formular selbst. FromArgb() 왘 Außerdem bietet die Struktur die Methode FromArgb(). Sie lässt sich auf verschiedene Arten aufrufen. Eine dieser Arten erwartet genau drei Parameter, nämlich die Werte für Rot, Grün und Blau, jeweils zwischen 0 und 255. Das Formular sieht nach der Änderung der Eigenschaft Farbe aus wie in Abbildung 1.20, wobei sich die Farbänderung bei der Schwarz-Weiß-Darstellung im gedruckten Buch leider nicht gut wiedergeben lässt. Abbildung 1.20 Nach Änderung der Eigenschaft»Farbe«38

14 Kapitel 2 Grundlagen 2 In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrundlagen von Visual Basic in Verbindung mit den gängigen Steuerelementen von Windows-Programmen. In den folgenden Abschnitten lernen Sie wichtige Elemente der Programmierung, wie Variablen, Operatoren, Verzweigungen und Schleifen, gemeinsam mit wohlbekannten und häufig verwendeten Steuerelementen kennen. 2.1 Variablen und Datentypen Variablen dienen zur vorübergehenden Speicherung von Daten, die sich zur Laufzeit eines Programms ändern können. Eine Variable besitzt einen eindeutigen Namen, unter dem sie angesprochen werden kann Namen und Werte Für die Namen von Variablen gelten in Visual Basic die folgenden Regeln: Namensregeln 왘 Sie beginnen mit einem Buchstaben. 왘 Sie können nur aus Buchstaben, Zahlen und einigen wenigen Sonderzeichen (z. B. dem Unterstrich _ ) bestehen. 왘 Sie dürfen Umlaute oder auch das scharfe ß enthalten. Allerdings kann das zu Fehlern im Einsatz unter anderssprachigen Umgebungen führen. Daher rate ich davon ab. 왘 Innerhalb eines Gültigkeitsbereichs darf es keine zwei Variablen mit dem gleichen Namen geben (siehe Abschnitt 2.1.4). Variablen erhalten ihre Werte durch Zuweisung per Gleichheitszeichen. Falls eine Variable als Erstes auf der rechten Seite des Gleichheitszeichens 39

15 2 Grundlagen 2.1 Variablen und Datentypen Auswahl des Datentyps genutzt wird, sollte ihr vorher ein Wert zugewiesen werden. Dadurch werden Programme eindeutiger, lesbarer und fehlerfreier Deklarationen Neben dem Namen besitzt jede Variable einen Datentyp, der die Art der Information bestimmt, die gespeichert werden kann. Sie als Entwickler wählen den Datentyp danach aus, ob Sie Text, Zahlen ohne Nachkommastellen, Zahlen mit Nachkommastellen oder z. B. logische Werte speichern möchten. Außerdem müssen Sie sich noch Gedanken über die Größe des Bereichs machen, den die Zahl oder der Text annehmen könnte, und über die gewünschte Genauigkeit bei Zahlen. In Abschnitt finden Sie eine Liste der Datentypen. Variablen sollten in Visual Basic immer mit einem Datentyp deklariert werden. Das beugt Fehlern vor, die aufgrund einer falschen Verwendung der Variablen entstehen könnten Datentypen Die wichtigsten von Visual Basic unterstützten Datentypen lassen sich in einige große Gruppen unterteilen: Es gibt Datentypen zur Speicherung von ganzen Zahlen: den Datentyp Byte mit Werten von 0 bis 255 den Datentyp Short mit Werten von bis Integer den Datentyp Integer mit Werten von bis und den Datentyp Long mit Werten von bis Außerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkommastellen: Einige weitere nützliche Datentypen sind: der Datentyp Boolean mit den Werten True oder False (wahr oder falsch) der Datentyp Date mit Werten für Datumsangaben vom 1. Januar des Jahres 1 bis zum 31. Dezember 9999 der Datentyp Char für einzelne Zeichen der Datentyp String für Zeichenketten mit variabler Länge Im folgenden Beispiel werden Variablen dieser Typen deklariert, mit Werten versehen und in einem Label angezeigt (Projekt Datentypen). Private Sub CmdAnzeige_Click(...) Handles... ' Ganze Zahlen Dim By As Byte Dim Sh As Short Dim It As Integer Dim Lg As Long ' Zahlen mit Nachkommastellen Dim Sg As Single Dim Db As Double Dim Dm As Decimal ' Boolesche Variable, Datum, Zeichen, Zeichenkette Dim Bo As Boolean Dim Dt As Date Dim Ch As Char Dim St As String ' Ganze Zahlen By = 200 Sh = It = Lg = Date String 2 Double den Datentyp Single mit einfacher Genauigkeit und Werten von ca. 3, bis ca. 3, den Datentyp Double, mit doppelter Genauigkeit und Werten von ca. 1, bis ca. 1, und den Datentyp Decimal, mit variabler Genauigkeit und Werten von ca. 7, bis ca. 7, ' Zahlen mit Nachkommastellen Sg=1/7 Db=1/7 Dm = 1D /

16 2 Grundlagen 2.1 Variablen und Datentypen ' Boolesche Variable, Datum, Zeichen, Zeichenkette Bo = True Dt = " " Ch = "a" St = "Zeichenkette" Variablen können bereits bei der Deklaration einen Wert erhalten, zum Beispiel: Dim Sh As Short = Bei den Datentypen für ganze Zahlen führt die Zuweisung einer zu großen Zahl zu einer Fehlermeldung. Die Datentypen für Zahlen mit Nachkommastellen unterscheiden sich Genauigkeit 2 LblAnzeige.Text = "Byte: " & By & vbcrlf & "Short: "&Sh&vbCrLf& "Integer: " & It & vbcrlf & "Long: " & Lg & vbcrlf & vbcrlf & "Single: "&Sg&vbCrLf & "Double: "&Db&vbCrLf & "Decimal: " & Dm & vbcrlf & vbcrlf & "Boolean: " & Bo & vbcrlf & "Date: " & Dt & vbcrlf & "Char: " & Ch & vbcrlf & "String: "&St in ihrer Genauigkeit. Nachkommastellen müssen im Programmcode durch einen Dezimalpunkt abgetrennt werden. In der Ausgabe erscheint dagegen ein Dezimalkomma. Die Zuweisung einer zu großen oder zu kleinen Zahl führt zur Anzeige von»unendlich«bzw. zu einer ungenauen Speicherung. Sehr große oder sehr kleine Zahlen lassen sich im Programmcode auch in der Exponentialschreibweise eingeben. Zwei Beispiele: 1.5e3 für oder 1.5e 3 für Beim Wechsel der Zeile werden diese Zahlen unmittelbar in Zahlen mit Nachkommastellen umgewandelt. Werte für Zeichen, Zeichenketten und Datumsvariablen müssen in doppelten Anführungszeichen angegeben werden. Die Datentypen Integer, Double, Boolean und String werden am häufigsten eingesetzt. Exponentialschreibweise Listing 2.1 Projekt»Datentypen«Übung Das Programm hat nach Betätigung des Buttons die Ausgabe wie in Abbildung 2.1 dargestellt. Schreiben Sie ein Programm, in dem Ihr Nachname, Vorname, Ihre Adresse, Ihr Geburtsdatum und Ihr Alter jeweils in Variablen eines geeigneten Übung»UDatentypen«Datentyps gespeichert und anschließend wie in Abbildung 2.2 ausgegeben werden. Abbildung 2.1 Wichtige Datentypen Abbildung 2.2 Übung UDatentypen Zur Erläuterung: Gültigkeitsbereich Dim As Variablen werden mit Dim... As... deklariert. Mehrere Variablen desselben Datentyps können, durch Kommata getrennt, innerhalb einer Variablen, die innerhalb einer Prozedur vereinbart werden, haben ihre Gültigkeit nur in der Prozedur. Außerhalb der Prozedur sind sowohl Name als Lokal Zeile deklariert werden (z. B. Dim x, y As Integer)

17 2 Grundlagen 2.1 Variablen und Datentypen Static Private, Dim Public Ausblenden auch Wert unbekannt. Solche Variablen bezeichnet man auch als lokale Variablen. Sobald die Prozedur abgearbeitet wurde, steht der Wert auch nicht mehr zur Verfügung. Beim nächsten Aufruf derselben Prozedur werden diese Variablen neu deklariert und erhalten neue Werte. Anders verhält es sich mit statischen Variablen. Sie behalten ihren Wert, solange das Programm läuft. Ein wiederholter Aufruf derselben Prozedur kann auf den letzten gespeicherten Wert einer Variablen zugreifen. Eine statische Variable vereinbaren Sie z. B. wie folgt: Static Sx As Integer. Variablen, die außerhalb von Prozeduren vereinbart werden, sind innerhalb der gesamten Klasse gültig, hier also innerhalb der Klasse des Formulars. Ihr Wert kann in jeder Prozedur gesetzt oder abgerufen werden und bleibt erhalten, solange das Formular im laufenden Programm existiert. Sie können die Variablen sowohl mit dem Schlüsselwort Private als auch mit dem Schlüsselwort Dim deklarieren. Sie sind außerhalb der Klasse nicht gültig. Weitere Einzelheiten zu klassenweit gültigen Variablen finden Sie in Kapitel 5. Variablen, die mit dem Schlüsselwort Public vereinbart werden, sind öffentlich. Damit sind sie auch außerhalb der jeweiligen Klasse gültig, also z. B. in anderen Formularen. Mehr dazu ebenfalls in Kapitel 5. Gibt es in einem Programmabschnitt mehrere Variablen mit dem gleichen Namen, gelten folgende Regeln: Lokale Variablen mit gleichem Namen in der gleichen Prozedur sind nicht zulässig. Eine klassenweit gültige Variable wird innerhalb einer Prozedur von einer lokalen Variablen mit dem gleichen Namen ausgeblendet. Im folgenden Beispiel werden Variablen unterschiedlicher Gültigkeitsbereiche deklariert, an verschiedenen Stellen verändert und ausgegeben (Projekt Gueltigkeitsbereich). Private Mx As Integer x=x+1 LblAnzeige.Text = "Sx: " & Sx & " x: " & x & " Mx: " & Mx Private Sub CmdAnzeigen2_Click(...) Handles... Dim Mx As Integer Mx = Mx + 1 LblAnzeige.Text = "Mx: " & Mx Listing 2.2 Projekt»Gueltigkeitsbereich«Zur Erläuterung: In der ersten Prozedur wird der Wert der statischen Variablen Sx und der klassenweit gültigen Variablen Mx bei jedem Aufruf erhöht. Die lokale Variable x wird immer wieder auf 1 gesetzt, siehe Abbildung 2.3. Abbildung 2.3 Lokale, statische und klassenweit gültige Variable In der zweiten Prozedur blendet die lokale Variable Mx die gleichnamige klassenweit gültige Variable aus. Die lokale Variable wird immer wieder auf 1 gesetzt, siehe Abbildung 2.4. Abbildung 2.4 Lokale Variable 2 Private Sub CmdAnzeigen1_Click(...) Handles... Static Sx As Integer Dim x As Integer Sx = Sx + 1 Mx = Mx + 1 Hinweis: Die Variablen werden hier vor ihrer ersten Benutzung nicht initialisiert, d. h., sie werden nicht mit einem Startwert besetzt. In Visual Basic haben Zahlenvariablen zwar automatisch den Startwert 0, trotzdem sollten Sie die Initialisierung im Sinne eines sauberen Programmierstils im Normalfall selbst vornehmen. Startwert setzen 44 45

18 2 Grundlagen 2.1 Variablen und Datentypen Übung»UGueltigkeitsbereich«Übung Erstellen Sie ein Programm, in dem zwei Buttons, ein Label und drei Variablen eines geeigneten Datentyps eingesetzt werden: Zu den Konstanten zählen auch die integrierten Konstanten, wie z. B. vbcrlf. Auch sie repräsentieren Zahlen, die aber nicht so einprägsam sind wie die Namen der Konstanten. Integrierte Konstanten 2 die klassenweit gültige Variable x die Variable y, die nur lokal in der Prozedur zum Click-Ereignis des ers- Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt (Projekt Konstanten). ten Buttons gültig ist die Variable z, die nur lokal in der Prozedur zum Click-Ereignis des zweiten Buttons gültig ist Private Const MaxWert = 75 Private Const Eintrag = "Picture" In der ersten Prozedur werden x und y jeweils um 0,1 erhöht und angezeigt, siehe Abbildung 2.5. In der zweiten Prozedur werden x und z jeweils um 0,1 erhöht und angezeigt, siehe Abbildung 2.6. Private Sub CmdKonstanten_Click(...) Handles... Const MaxWert = 55 Const MinWert = 5 LblAnzeige.Text = (MaxWert - MinWert) / 2 & vbcrlf & Eintrag Listing 2.3 Projekt»Konstanten«Abbildung 2.5 Ausgabe der ersten Methode nach einigen Klicks Zur Erläuterung: Konstanten werden mithilfe des Schlüsselworts Const definiert. Const Die Konstanten MaxWert und Eintrag werden mit klassenweiter Gültigkeit festgelegt. Innerhalb der Prozedur werden die beiden lokalen Konstanten MaxWert Abbildung 2.6 Ausgabe der zweiten Methode nach weiteren Klicks und MinWert festgelegt. MaxWert blendet die klassenweit gültige Konstante gleichen Namens aus, wie es in unten stehender Abbildung 2.7 zu Konstanten sehen ist. Außerdem kommt noch die integrierte Konstante vbcrlf zum Einsatz. Konstanten repräsentieren Werte Konstanten sind vordefinierte Werte, die während der Laufzeit nicht verändert werden können. Geben Sie Konstanten im Allgemeinen aussagekräftige Namen, dadurch sind sie leichter zu behalten als die Werte, die sie repräsentieren. Konstanten werden an einer zentralen Stelle definiert und können an verschiedenen Stellen des Programms genutzt werden. Somit müssen Sie eine eventuelle Änderung einer Konstanten zur Entwurfszeit nur an einer Stelle vornehmen. Der Gültigkeitsbereich von Konstanten ist analog zum Gültigkeitsbereich von Variablen. Abbildung 2.7 Konstanten 46 47

19 2 Grundlagen 2.2 Operatoren Enumerationen Es wird die Enumeration Zahl vom Datentyp Integer vereinbart. Da es Konstanten aufzählen Enumerationen sind Aufzählungen von Konstanten, die thematisch zusammengehören. Alle Enumerationen haben den gleichen Datentyp, der ganzzahlig sein muss. Bei der Deklaration werden ihnen Werte zugewiesen, am besten explizit. Innerhalb von Visual Basic gibt es zahlreiche vordefinierte Enumerationen. Ähnlich wie bei den integrierten Konstanten sind die Namen der Enumera- sich um einen Typ handelt und nicht um eine Variable oder Konstante, muss sie außerhalb von Prozeduren vereinbart werden. Damit ist sie automatisch für die gesamte Klasse gültig. In der ersten Ereignisprozedur werden zwei Elemente der eigenen Enumeration Zahl verwendet. Die beiden Zahlen, die sie repräsentieren, werden miteinander multipliziert, siehe Abbildung tionen und deren Elemente besser lesbar als die durch sie repräsentierten Zahlen. Ein Beispiel: Die Enumeration DialogResult ermöglicht es Ihnen als Programmierer, die zahlreichen möglichen Antworten des Benutzers beim Einsatz von Windows-Standarddialogfeldern (Ja, Nein, Abbrechen, Wiederholen, Ignorieren,...) anschaulich einzusetzen. Abbildung 2.8 Erste Enumeration Im folgenden Programm wird mit einer eigenen und einer vordefinierten Enumeration gearbeitet (ebenfalls im Projekt Konstanten). [...] Private Enum Zahl As Integer Eins = 1 Zwei = 2 Drei = 3 Vier = 4 End Enum [...] Private Sub CmdEnumeration1_Click(...) Handles... LblAnzeige.Text = Zahl.Zwei * Zahl.Drei In der zweiten Ereignisprozedur werden zwei Elemente der vordefinierten Enumeration FirstDayOfWeek verwendet, siehe Abbildung 2.9. Sie können sie zur Ermittlung des Wochentags eines gegebenen Datums verwenden. Abbildung 2.9 Zweite Enumeration Enum Private Sub CmdEnumeration2_Click(...) Handles... LblAnzeige.Text = "Sonntag: " & FirstDayOfWeek.Sunday & ", Samstag: " & FirstDayOfWeek.Saturday Listing 2.4 Projekt»Konstanten«, Teil 2 Zur Erläuterung: Enumerationen werden mithilfe des Schlüsselworts Enum definiert. 2.2 Operatoren Zum Zusammensetzen von Ausdrücken nutzt Visual Basic, wie jede andere Programmiersprache auch, Operatoren. In diesem Buch wurden bereits die Operatoren = für Zuweisungen und & für Verkettungen verwendet. Es gibt verschiedene Kategorien von Operatoren. Vorrangregeln (Prioritäten) sind für die Reihenfolge der Abarbeitung zuständig, falls mehrere Operatoren innerhalb eines Ausdrucks eingesetzt werden. Diese Vorrangregeln sind weiter unten in diesem Abschnitt angegeben. Falls Sie sich bei der Ver- Priorität 48 49

20 2 Grundlagen 2.2 Operatoren wendung dieser Regeln nicht sicher sind, empfiehlt es sich, durch eigene Klammersetzung die Reihenfolge explizit festzulegen Rechenoperatoren Ausdruck Ergebnis Erklärung 19 Mod durch 4 ist 4 Rest Mod ,5 durch 4,2 ist 4 Rest 2,7 2 Rechenoperatoren Ganzzahldivision Modulo Rechenoperatoren dienen zur Durchführung von Berechnungen, siehe Tabelle 2.1. Operator Beschreibung + Addition - Subtraktion oder Negation * Multiplikation / Division \ Ganzzahldivision ^ Mod Potenzierung Modulo Tabelle 2.1 Rechenoperatoren Die Ganzzahldivision erfolgt in zwei Schritten. Im ersten Schritt werden Dividend und Divisor einzeln gerundet. Im zweiten Schritt werden die beiden verbliebenen Zahlen geteilt, anschließend werden die Ziffern nach dem Komma abgeschnitten. Tabelle 2.2 zeigt einige Beispiele. Ausdruck 19 / \ \ \ Tabelle 2.2 Ganzzahldivision Ergebnis Der Modulo-Operator Mod berechnet den Rest einer Division. Zwei Beispiele sehen Sie in Tabelle 2.3. Tabelle 2.3 Modulo-Operator Zur Potenzierung einer Zahl dient der Operator ^ (hoch), Beispiele siehe Tabelle 2.4. Ausdruck Ergebnis 2 ^ ^ 2 ^ ^ ^ 5-32 Tabelle 2.4 Potenzierung Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig und werden von links nach rechts in der Reihenfolge ihres Auftretens ausgewertet. Dasselbe gilt für Additionen und Subtraktionen, die zusammen in einem Ausdruck auftreten. Multiplikation und Division werden vor Addition und Subtraktion ausgeführt. Mit Klammern können Sie diese Rangfolge außer Kraft setzen, damit bestimmte Teilausdrücke vor anderen Teilausdrücken ausgewertet werden. In Klammern gesetzte Ope/rationen haben grundsätzlich Vorrang. Innerhalb der Klammern gilt jedoch die normale Rangfolge der Operatoren. Alle Berechnungen innerhalb dieses Abschnitts können Sie auch mithilfe des Codes im Projekt Rechenoperatoren nachvollziehen. Übung Berechnen Sie die beiden folgenden Ausdrücke, speichern Sie das Ergebnis in einer Variablen eines geeigneten Datentyps und zeigen Sie es an: 1. Ausdruck: 3 * * 2 2. Ausdruck: 3 * ( ) * 2 Klammern Projekt Übung»URechenoperatoren«50 51

21 2 Grundlagen 2.2 Operatoren Vergleich Vergleichsoperatoren Vergleichsoperatoren (siehe Tabelle 2.5) dienen dazu festzustellen, ob bestimmte Bedingungen zutreffen oder nicht. Das Ergebnis lässt sich u. a. zur Ablaufsteuerung von Programmen nutzen. Abschnitt 2.4 geht hierauf genauer ein. Operator Beschreibung < kleiner als Alle Vergleiche innerhalb dieses Abschnitts können Sie auch mithilfe des Codes im Projekt Vergleichsoperatoren nachvollziehen. Übung Ermitteln Sie das Ergebnis der beiden folgenden Ausdrücke, speichern Sie es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an: 1. Ausdruck: 12 3 >= 4 * Ausdruck: "Maier" Like "M??er" Projekt Übung»UVergleichsoperatoren«2 <= kleiner als oder gleich > größer als Logische Operatoren >= größer als oder gleich Logische Operatoren dienen dazu, mehrere Bedingungen zusammenzufas- Logik = gleich <> ungleich sen. Das Ergebnis lässt sich ebenfalls u. a. zur Ablaufsteuerung von Programmen nutzen (siehe hierzu auch Abschnitt 2.4). Die logischen Operatoren sehen Sie in Tabelle 2.8. Tabelle 2.5 Vergleichsoperatoren Operator Beschreibung Das Ergebnis ist True, wenn... Einige Beispiele sehen Sie in Tabelle 2.6. Not Nicht... der Ausdruck False ist. Ausdruck Ergebnis And Und... beide Ausdrücke True sind. 5 > 3 True Or Inklusives Oder... mindestens ein Ausdruck True ist. 3 = 3.2 False Xor Exklusives Oder... genau ein Ausdruck True ist * 2 >= 12 False Tabelle 2.8 Logische Operatoren Tabelle 2.6 Nutzung von Vergleichsoperatoren Es seien die Variablen A = 1, B = 3 und C = 5 gesetzt. Die Ausdrücke in der ers- Like Darüber hinaus gibt es noch den Operator Like, der zum Mustervergleich dient. Dabei können Sie u. a. die Platzhalter * (eines oder mehrere Zeichen) und? (genau ein Zeichen) einsetzen. Tabelle 2.7 zeigt einige Beispiele. ten Spalte von Tabelle 2.9 führen zu den Ergebnissen in der zweiten Spalte. Ausdruck Ergebnis Not (A < B) False Ausdruck "abxba" Like "a*a" "abxba" Like "a?a" "aba" Like "a?a" "asdlfigc" Like "a?d?f*c" Tabelle 2.7 Mustervergleich Ergebnis True False True True (B > A) And (C > B) True (B < A) Or (C < B) False (B < A) Xor (C > B) True Tabelle 2.9 Ausdrücke mit logischen Operatoren 52 53

22 2 Grundlagen 2.2 Operatoren Projekt Übung»ULogische- Operatoren«Alle Berechnungen innerhalb dieses Abschnitts können Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvollziehen. Übung Ermitteln Sie das Ergebnis der beiden folgenden Ausdrücke, speichern Sie es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an: Zuweisungsoperatoren Der einfachste Zuweisungsoperator, das Gleichheitszeichen, wurde bereits genutzt. Es gibt zur Verkürzung von Anweisungen noch einige weitere Zuweisungsoperatoren, siehe Tabelle Operator Beispiel Ergebnis Zeichen = 2 1. Ausdruck: 4 > 3 And 4 > 3 = x = 7 x erhält den Wert Ausdruck: 4 > 3 Or 4 > 3 += x += 5 Der Wert von x wird um 5 erhöht. -= x -= 5 Der Wert von x wird um 5 verringert Verkettungsoperator *= x *= 3 Der Wert von x wird auf das Dreifache erhöht. Umwandlung in String Der Operator & dient der Verkettung von Zeichenfolgen. Ist einer der Ausdrücke keine Zeichenfolge, sondern eine Zahl oder Datumsangabe, wird er in einen String verwandelt. Das Gesamtergebnis ist wiederum eine Zeichenfolge. Beispiel: Private Sub CmdAnzeigen_Click(...) Handles... Dim gesamt As String /= x /= 3 Der Wert von x wird auf ein Drittel verringert. \= x \= 3 Der Wert von x wird auf ein Drittel verringert. Nachkommastellen werden abgeschnitten. ^= x ^= 3 Der Wert von x wird auf x hoch 3 erhöht. &= z &= "abc" Die Zeichenkette z wird um den Text abc verlängert. Dim s As Single Dim i As Integer Tabelle 2.10 Zuweisungsoperatoren DimdAsDate s = 4.6 i = -12 d = " " gesamt = "Hallo " & s & " " & i & " " & d LblAnzeige.Text = gesamt Rangfolge der Operatoren Enthält ein Ausdruck mehrere Operationen, werden die einzelnen Teilausdrücke in einer bestimmten Rangfolge ausgewertet und aufgelöst, die als Rangfolge bzw. Priorität der Operatoren bezeichnet wird. Es gilt die Rangfolge in Tabelle Priorität Operator Beschreibung Listing 2.5 Projekt»Verkettungsoperator«^ Exponentialoperator Das Ergebnis ist in Abbildung 2.10 zu sehen. Ein weiteres Beispiel stand bereits in Abschnitt negatives Vorzeichen *, / Multiplikation, Division \ Ganzzahldivision Mod Modulo +, - Addition, Subtraktion Abbildung 2.10 Verkettung Tabelle 2.11 Rangfolge der Operatoren 54 55

23 2 Grundlagen 2.3 Einfache Steuerelemente Operator & =, <>, <, >, <=, >=, Like Not And Or Beschreibung Verkettung Vergleichsoperatoren (Das Zeichen = steht für den Vergleich, nicht für die Zuweisung.) logisches Nicht logisches Und logisches Oder Tabelle 2.11 Rangfolge der Operatoren (Forts.) 2.3 Einfache Steuerelemente Windows-Programmierung mit Visual Basic besteht aus zwei Teilen: der Arbeit mit visuellen Steuerelementen und der Programmierung mit der Sprache. Beides soll in diesem Buch parallel vermittelt werden, damit die eher theoretischen Abschnitte zur Programmiersprache durch eine anschauliche Praxis vertieft werden können. Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbeitet, bevor im nächsten Abschnitt die Verzweigungen zur Programmsteuerung vorgestellt werden: Panel, Zeitgeber, Textfeld und Zahlenauswahlfeld. 2 Die Operatoren, die in der Tabelle weiter oben stehen, haben die höchste Panel Klammern Priorität. Wie bereits bei den Rechenoperatoren erwähnt: Mit Klammern können Sie diese Rangfolge außer Kraft setzen, damit bestimmte Teilausdrücke vor Ein Panel dient normalerweise als Container für andere Steuerelemente. In diesem Abschnitt wird es zur visuellen Darstellung eines Rechtecks und für eine kleine Animation genutzt. Container Übung»UOperatoren«anderen Teilausdrücken ausgewertet werden. In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Innerhalb der Klammern gilt jedoch wieder die normale Rangfolge der Operatoren. Übung Sind die Bedingungen in Tabelle 2.12 wahr oder falsch? Lösen Sie die Aufgabe möglichst ohne PC. Die Eigenschaften BackColor (Hintergrundfarbe), Location (Position) und Size (Größe) sind bereits von anderen Steuerelementen bekannt. Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel durch Betätigung von vier Buttons um 10 Pixel nach oben, unten, links oder rechts verschoben. Es hat die Größe Pixel, die Startposition X=145 und Y=80 sowie eine eigene Hintergrundfarbe. Die Bewegung wird mithilfe der Struktur Point durchgeführt. Nr. Werte Bedingung In Abbildung 2.11 und Abbildung 2.12 ist das Panel im Startzustand bzw. nach einigen Klicks zu sehen. 1 a=5 b=10 a>0 And b<>10 2 a=5 b=10 a>0 Or b<>10 3 z=10 w=100 z<>0 Or z>w Or w-z=90 4 z=10 w=100 z=11 And z>w Or w-z=90 5 x=1.0 y=5.7 x>=.9 And y<=5.8 6 x=1.0 y=5.7 x>=.9 And Not(y<=5.8) 7 n1=1 n2=17 n1>0 And n2>0 Or n1>n2 And n2<>17 8 n1=1 n2=17 n1>0 And (n2>0 Or n1>n2) And n2<>17 Tabelle 2.12 Übung UOperatoren Abbildung 2.11 Panel, Startzustand 56 57

24 2 Grundlagen 2.3 Einfache Steuerelemente jedes andere Steuerelement zum Formular hinzugefügt werden. Da es sich aber um ein nicht sichtbares Steuerelement handelt, wird er unterhalb des Formulars angezeigt. Auch zur Laufzeit ist er nicht sichtbar. 2 Abbildung 2.12 Panel, nach Verschiebung Der Programmcode: Private Sub CmdOben_Click(...) Handles... PanMove.Location = New Point(PanMove.Location.X, PanMove.Location.Y - 10) Seine wichtigste Eigenschaft ist das Zeitintervall, in dem das Ereignis auftreten soll. Dieses Zeitintervall wird in Millisekunden angegeben. Die Eigenschaft Enabled dient der Aktivierung bzw. Deaktivierung des Zeitgebers. Sie kann zur Entwicklungszeit oder zur Laufzeit auf True oder False gestellt werden. Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunächst ein Formular mit zwei Buttons. Betätigt man den Start-Button, erscheint ein x in einem Bezeichnungsfeld. Alle 0,5 Sekunden erscheint automatisch ein weiteres x, siehe Abbildung Das wird durch den Timer gesteuert, bei dem der Wert für die Eigenschaft Interval auf 500 gesetzt wird. Nach Betätigung des Stop-Buttons kommt kein weiteres x hinzu. Intervall Enabled Private Sub CmdUnten_Click(...) Handles... PanMove.Location = New Point(PanMove.Location.X, PanMove.Location.Y + 10) Private Sub CmdLinks_Click(...) Handles... PanMove.Location = New Point(PanMove.Location.X - 10, PanMove.Location.Y) Private Sub CmdRechts_Click(...) Handles... PanMove.Location = New Point(PanMove.Location.X + 10, PanMove.Location.Y) Listing 2.6 Projekt»Panel«Abbildung 2.13 Nach einigen Sekunden Der zugehörige Code: Private Sub TimAnzeige_Tick(...) Handles TimAnzeige.Tick LblAnzeige.Text &= "x" Private Sub CmdStart_Click(...) Handles... TimAnzeige.Enabled = True Timer Zeitgeber Ein Zeitgeber (engl.: Timer) erzeugt in festgelegten Abständen Zeittakte. Diese Zeittakte sind Ereignisse, die Sie als Entwickler mit Aktionen verbinden können. Das zugehörige Ereignis heißt Tick. Ein Zeitgeber kann wie Private Sub CmdStop_Click(...) Handles... TimAnzeige.Enabled = False Listing 2.7 Projekt»Zeitgeber«58 59

25 2 Grundlagen 2.3 Einfache Steuerelemente Übung Kran um 10 Pixel nach rechts bzw. links fahren Übung»UPanelZeitgeber«Erstellen Sie eine Windows-Anwendung. In der Mitte eines Formulars sollen zu Beginn vier Panels verschiedener Farbe der Größe Pixel platziert werden, siehe Abbildung Kran um 10 Pixel in der Höhe ausfahren bzw. einfahren Denken Sie daran, dass bei vielen Bewegungen mehrere Steuerelemente bewegt werden müssen, da der Kran sonst seinen Zusammenhalt verliert. 2 Manche Aktionen resultieren nur aus Größenveränderungen (Eigenschaften Width und Height), manche nur aus Ortsveränderungen (Location), manche aus beidem. In Abbildung 2.16 und Abbildung 2.17 sehen Sie den Kran im Startzustand bzw. nach einigen Klicks. Es können natürlich immer noch widersprüchliche Bewegungen auftreten. Mit weiter zunehmendem Programmierwissen können Sie diesen Proble- Abbildung 2.14 Startzustand men später noch abhelfen. Sobald der Start-Button betätigt wird, sollen diese vier Panels sich diagonal in ca Sekunden zu den Ecken des Formulars bewegen, jedes Panel in eine andere Ecke, siehe Abbildung Abbildung 2.16 Startzustand Abbildung 2.15 Nach einigen Sekunden Übung Übung»UKran«Diese Übung gehört nicht zum Pflichtprogramm. Sie ist etwas umfangreicher, verdeutlicht aber die Möglichkeiten einer schnellen Visualisierung von Prozessen durch Visual Basic mit wenigen Programmzeilen. Konstruieren Sie aus mehreren Panels einen Kran (Fundament, senkrechtes Hauptelement, waagerechter Ausleger, senkrechter Haken am Ausleger). Der Benutzer soll die Möglichkeit haben, über insgesamt acht Buttons die folgenden Aktionen auszulösen: Haken um 10 Pixel ausfahren bzw. einfahren Ausleger um 10 Pixel ausfahren bzw. einfahren Abbildung 2.17 Nach einigen Aktionen 60 61

26 2 Grundlagen 2.3 Einfache Steuerelemente Textfelder "' eingegeben" Eingabefeld Ein Textfeld dient in erster Linie dazu, die Eingabe von Text oder Zahlen vom Benutzer entgegenzunehmen. Diese Eingaben werden in der Eigen- 2 schaft Text des Textfelds gespeichert. Das Aussehen und das Verhalten Listing 2.8 Projekt»Textfelder«eines Textfelds werden u. a. durch folgende Eigenschaften gekennzeichnet: MultiLine: Steht MultiLine auf True, kann bei der Eingabe und bei der Zur Erläuterung: Anzeige mit mehreren Textzeilen gearbeitet werden. Die Eigenschaft Text des Textfelds speichert die Eingabe. Die Eigenschaft ScrollBars: Ein Textfeld lässt sich mit vertikalen und/oder horizontalen wird in einen längeren Ausgabetext eingebettet. Bildlaufleisten zur Eingabe und Anzeige längerer Texte versehen. MaxLength: Mit dieser Eigenschaft lässt sich die Anzahl der Zeichen des Textfelds beschränken. Ist keine Beschränkung vorgesehen, kann das Textfeld 32K Zeichen aufnehmen. Bei der Eingabe und Auswertung von Zahlen sind einige Besonderheiten zu beachten. Im nachfolgenden Programm, ebenfalls im Projekt Textfelder, kann der Benutzer in einem Textfeld eine Zahl eingeben. Nach Betätigung des Buttons Rechnen wird der Wert dieser Zahl verdoppelt, das Ergebnis Zahlen eingeben Passwort PasswordChar: Falls für diese Eigenschaft im Entwurfsmodus ein Platz- wird in einem Label darunter ausgegeben. halterzeichen eingegeben wird, wird während der Laufzeit für jedes eingegebene Zeichen nur dieser Platzhalter angezeigt. Diese Eigenschaft wird vor allem bei Passwort-Abfragen verwendet. Private Sub CmdRechnen1_Click(...) Handles... LblAusgabe.Text = TxtEingabe.Text * 2 Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z. B. (Strg) + (C) und (Strg) + (V)) in die Zwischenablage kopiert bzw. aus der Zwischen- Listing 2.9 Projekt»Textfelder«, Zahleneingabe ablage eingefügt werden. Zur Erläuterung: Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in einem Textfeld einen Text eingeben. Nach Betätigung des Buttons Ausgabe wird der eingegebene Text in einem zusammenhängenden Satz ausgegeben, siehe Abbildung Falls eine Zeichenkette eingegeben wird, die eine Zahl darstellt, wird sie implizit, d. h. automatisch, in eine Zahl umgewandelt, mit der gerechnet werden kann. Stellt die eingegebene Zeichenkette keine Zahl dar, kommt es zu einem Laufzeitfehler. Diese Situation sollten Sie natürlich vermeiden: Sie können vorher überprüfen, ob es sich bei der Zeichenkette um eine gültige Zahl handelt und entsprechend reagieren. Das wird möglich, sobald Sie Verzweigungen zur Programmsteuerung beherrschen. Abbildung 2.18 Eingabe in Textfeld Allgemein können Sie Programme so schreiben, dass ein Programmabbruch abgefangen werden kann. Das wird möglich, sobald Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) beherrschen. Ausnahmebehandlung Der Code lautet wie folgt: Einige Beispiele: Private Sub CmdAusgabe_Click(...) Handles... LblAusgabe.Text = "Sie haben '" & TxtEingabe.Text & Abbildung 2.19 zeigt die Eingabe einer Zahl mit Nachkommastellen

27 2 Grundlagen 2.3 Einfache Steuerelemente mithilfe der Methode ToDouble() aus der Klasse Convert. Die Klasse Convert bietet eine Reihe von Methoden für die Umwandlung (= Konvertierung) in andere Datentypen. 2 Debugging beenden Abbildung 2.19 Eingabe einer Zahl mit Nachkommastellen Die Eingabe einer Zeichenkette, z. B. abc, führt zur Anzeige einer nicht behandelten Ausnahme. Die Zeile, in der der Fehler auftritt, wird im Code markiert, damit der Fehler beseitigt werden kann (siehe Abbildung 2.20). Das Programm muss über den Menüpunkt Debuggen Debugging beenden beendet werden, bevor es sich neu starten lässt. Private Sub CmdRechnen2_Click(...) Handles... LblAusgabe.Text = Convert.ToDouble(TxtEingabe.Text) * 2 Listing 2.10 Projekt»Textfelder«, Methode ToDouble() Zur Erläuterung: Der eingegebene Text wird mit der Methode ToDouble() in eine Zahl umgewandelt. Allerdings ist nach wie vor ein Programmabbruch bei falscher Eingabe möglich Zahlenauswahlfeld Das Steuerelement Zahlenauswahlfeld (NumericUpDown) bietet eine andere NumericUpDown Möglichkeit, Zahlenwerte an ein Programm zu übermitteln. Die Zahlenwerte können innerhalb selbst gewählter Grenzen und in selbst definierten Schritten über zwei kleine Pfeiltasten ausgewählt werden. Sie können aber Abbildung 2.20 Anzeige des Fehlers auch weiterhin eingegeben werden, wie bei einem Textfeld. Wichtige Eigenschaften des Steuerelements sind die folgenden: Die Eingabe einer Zahl, bei der ein Punkt statt einem Komma zur Abtrennung von Nachkommastellen eingegeben wird, führt zu einem ganz anderen Rechenergebnis, siehe Abbildung Der Punkt wird ignoriert, die Zahl wird als 352 angesehen und führt so zu dem Ergebnis 704. Value bezeichnet zur Entwicklungszeit den Startwert und zur Laufzeit den vom Benutzer aktuell eingestellten Wert. Maximum, Minimum bestimmen den größtmöglichen Wert und den kleinstmöglichen Wert der Eigenschaft Value. Es handelt sich also um die Value Werte, die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten erreicht werden können. Increment stellt die Schrittweite ein, mit der sich der Wert (Eigenschaft Value) ändert, wenn der Benutzer eine der kleinen Pfeiltasten betätigt. DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An- Abbildung 2.21 Punkt vor den Nachkommastellen zeige des Zahlenauswahlfelds. ToDouble() Sie sollten dafür sorgen, dass der Inhalt des Textfelds explizit in eine Zahl (mit möglichen Nachkommastellen) umgewandelt wird. Das erreichen Sie Das wichtigste Ereignis dieses Steuerelements ist ValueChanged. Es tritt bei der Veränderung der Eigenschaft Value ein und sollte anschließend zur Programmsteuerung verwendet werden. ValueChanged 64 65

28 2 Grundlagen 2.4 Verzweigungen Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese Eigenschaften und das genannte Ereignis genutzt. Der Benutzer kann Zahlenwerte zwischen 5,0 und +5,0 in Schritten von 0,1 über ein Zahlenauswahlfeld einstellen. Der ausgewählte Wert wird unmittelbar in einem Label angezeigt, siehe Abbildung gungen die Programmausführung an einen bestimmten Anweisungsblock. Bedingungen erstellen Sie mithilfe der bereits vorgestellten Vergleichsoperatoren. Seltener genutzt werden außerdem noch die Auswahlfunktionen IIf() und Choose(). 2 Abbildung 2.22 Zahlenauswahlfeld Einzeiliges If... Then... Else Das einzeilige If... Then... Else hat folgenden Aufbau: If Bedingung Then Anweisungen1 [ Else Anweisungen2 ] Die Eigenschaften werden zur Entwicklungszeit wie folgt eingestellt: Value: Wert 2, die Anwendung startet also bei dem Wert 2,0 für das Zahlenauswahlfeld Maximum, Minimum: Werte 5 und +5 Increment: Wert 0,1 DecimalPlaces: Wert 1, zur Anzeige einer einzelnen Nachkommastelle Der Code lautet: Private Sub NumEingabe_ValueChanged(...) Handles _ NumEingabe.ValueChanged LblAusgabe.Text = NumEingabe.Value Listing 2.11 Projekt»ZahlenAufAb«2.4 Verzweigungen Der Programmcode wurde bisher rein sequenziell abgearbeitet, d. h. eine Anweisung nach der anderen. Kontrollstrukturen ermöglichen eine Steuerung dieser Reihenfolge. Die Kontrollstrukturen unterteilen sich in Verzweigungen und Schleifen. Verzweigungen gestatten dem Programm, in verschiedene alternative Anweisungsblöcke zu verzweigen. Es gibt die beiden Verzweigungsstrukturen If... Then... Else und Select Case... Diese Auswahlmöglichkeiten übergeben u. a. aufgrund von Bedin- Die Bedingung wird ausgewertet, sie ist entweder wahr oder falsch (True oder False). Ist das Ergebnis der Auswertung True, wird der Then-Teil mit den Anweisungen1 ausgeführt. Ist das Ergebnis der Auswertung False und gibt es einen Else-Teil, wird der Else-Teil mit den Anweisungen2 ausgeführt. Der Else-Teil ist optional. Das wird beim obigen Aufbau mithilfe der rechteckigen Klammern [ ] verdeutlicht. Dabei kann es sich sowohl um eine einzelne Anweisung als auch um mehrere Anweisungen handeln, die durch einen Doppelpunkt (:) voneinander getrennt sind. In jedem Fall muss der gesamte Block in einer Zeile untergebracht werden. If-Strukturen können auch ineinander verschachtelt werden. Im nachfolgenden Programm im Projekt EinzeiligesIf wird das einzeilige If in vier verschiedenen Beispielen genutzt. Beachten Sie dabei, dass die einzelnen Anweisungen zu lang für den Druck in diesem Buch sind und daher auf mehrere Zeilen verteilt werden, teilweise auch mithilfe des Zeichens _ (Unterstrich). Es handelt sich aber in jedem Fall um einzeilige If-Verzweigungen. Private Sub CmdAnzeige1_Click(...) Handles... Dim x As Integer x=-1 If x < 0 Then LblAnzeige1.Text = "Negativ" Private Sub CmdAnzeige2_Click(...) Handles... Dim x As Integer If... Then... Else Unterstrich 66 67

29 2 Grundlagen 2.4 Verzweigungen x=-1 If x > 0 Then LblAnzeige2.Text = "Positiv" _ Else LblAnzeige2.Text = "Negativ oder Null" In Abbildung 2.23 sehen Sie die Ausgabe nach Betätigung aller vier Buttons. 2 Private Sub CmdAnzeige3_Click(...) Handles... Dim x As Integer x=-1 If x > 0 Then LblAnzeige3.Text = "Positiv" _ Else If x = 0 Then LblAnzeige3.Text = "Null" _ Else LblAnzeige3.Text = "Negativ" Abbildung 2.23 Einzeiliges If If...Then...Else-Block Private Sub CmdAnzeige4_Click(...) Handles... Dim x As Integer x=-1 If x > 0 Then x = x + 1 : LblAnzeige4.Text = "Positiv, x = " & x _ Elsex=x-1:LblAnzeige4.Text = "Negativ oder Null, x = " & x Listing 2.12 Projekt»EinzeiligesIf«Zur Erläuterung: Die Integer-Variable x erhält jeweils den Wert -1. Für die Tests in den einzelnen Beispielen sollten Sie diesen Wert natürlich auch einmal ändern. Beim ersten Beispiel wird nur etwas angezeigt, falls die Variable x negativ ist. Beim zweiten Beispiel wird in jedem Fall etwas angezeigt. Beim dritten Beispiel wird für den Fall, dass die Variable x nicht positiv ist, eine weitere Verzweigung durchlaufen. Man nennt diese Verzweigung auch eine innere Verzweigung, im Gegensatz zu einer äußeren Verzweigung. Ist die Variable x = 0, wird wegen der inneren Verzweigung Null angezeigt, anderenfalls wird Negativ angezeigt. Beim vierten Beispiel werden für beide möglichen Fälle jeweils zwei Anweisungen durchlaufen, die durch das Zeichen : (Doppelpunkt) voneinander getrennt sind. Für einfache Entscheidungen und einzelne Anweisungen eignet sich das einzeilige If. Sobald mehrere Anweisungen auszuführen sind, wird der Programmcode schnell unübersichtlich. Für diese Zwecke ist ein If...Then...Else-Block wesentlich besser geeignet. Der Block hat folgenden Aufbau: If Bedingung1 Then Anweisungen1 [ ElseIf Bedingung2 Anweisungen2 ]... [ Else AnweisungenX ] Das Programm verzweigt zu den Anweisungen hinter der ersten zutreffenden Bedingung. Falls keine Bedingung zutrifft, werden die Anweisungen hinter dem Else ausgeführt, sofern es diesen Else-Zweig gibt. Anderenfalls wird keine Anweisung durchgeführt. Ein If...Then...Else-Block endet immer mit einem. Das nachfolgende Programm im Projekt BlockIf prüft vier verschiedene Fälle. Trifft keiner dieser Fälle zu, wird der Else-Zweig ausgeführt: Private Sub CmdAnzeige_Click(...) Handles... Dim x, y As Integer x=0 y=0 Ifx>=0Andy>=0Then Mehrzeilig, Block 68 69

30 2 Grundlagen 2.4 Verzweigungen LblAnzeige.Text = "Beide größer oder gleich Null" ElseIf x >= 0 And y < 0 Then LblAnzeige.Text = "Nur X größer oder gleich Null" ElseIf x < 0 And y >= 0 Then LblAnzeige.Text = "Nur Y größer oder gleich Null" ElseIf x >= 0 Then LblAnzeige.Text = "Wird nie angezeigt" Else LblAnzeige.Text = "Beide kleiner Null" Listing 2.13 Projekt»BlockIf«In Abbildung 2.24 sehen Sie die Ausgabe nach Betätigung des Buttons. Abbildung 2.24 If...Then...Else-Block Select Case Mehrfachauswahl Eine Verzweigung kann in bestimmten Fällen auch mit Select Case... gebildet werden. Diese Struktur vereinfacht eine Mehrfachauswahl, wenn nur ein Wert untersucht werden muss, und ist wie folgt aufgebaut: Select Case Testausdruck [ Case Ausdrucksliste1 Anweisungen1 ] [ Case Ausdrucksliste2 Anweisungen2 ]... [ Case Else AnweisungenX ] End Select dem Schlüsselwort To bestehen. Ein Ausdruck kann aus einem Wert oder einer Bedingung mit dem Schlüsselwort Is bestehen. Bei der ersten Übereinstimmung wird der zugehörige Anweisungsblock ausgeführt. Anschließend wird mit der nächsten Anweisung hinter dem End Select fortgefahren. Der optionale Anweisungsblock hinter dem Case Else wird ausgeführt, falls vorher keine Übereinstimmung gefunden wird. Das nachfolgende Programm im Projekt SelectCase prüft ebenfalls vier verschiedene Fälle. Trifft keiner dieser Fälle zu, wird der Case-Else-Zweig ausgeführt: Private Sub CmdAnzeige_Click(...) Handles... Dim x As Integer x=20 Select Case x Case1,3,5,7,9 LblAnzeige.Text = "Ungerade, Einstellig" Case2,4,6,8 LblAnzeige.Text = "Gerade, Einstellig" Case Is < 1, Is > 20 LblAnzeige.Text = "Kleiner 1 oder größer 20" Case10To15 LblAnzeige.Text = "Größer gleich 10 und" & " kleiner gleich 15" Case Else LblAnzeige.Text = "Größer 15 und kleiner 21" End Select Listing 2.14 Projekt»SelectCase«In diesem Beispiel sind nur die Zahlen größer 15 und kleiner 21 in keiner Ausdrucksliste enthalten. Der entsprechende Text befindet sich also im Case-Else-Zweig, wie Sie in Abbildung 2.25 sehen. End Select Case Else 2 To, Is Die Struktur Select Case... verwendet nur einen Testausdruck, der am Beginn der Struktur ausgewertet wird. Sein Wert wird anschließend der Reihe nach mit den Werten der Ausdruckslisten verglichen. Eine Ausdrucksliste kann aus mehreren Ausdrücken oder einer Bereichsangabe mit Abbildung 2.25 Auswahl mit Select... Case 70 71

31 2 Grundlagen 2.5 Verzweigungen und Steuerelemente Funktion IIf Zur Erläuterung: Liefert Wert Die Funktion IIf() ähnelt dem einzeiligen If... Then... Else, liefert aber im Unterschied zu diesem direkt einen Wert zurück. Ihre Syntax lautet: Der Wert x = 2 führt zur Ausgabe von Pfund. 2 IIf(Bedingung, True-Ausdruck, False-Ausdruck) Übungen Sowohl True-Ausdruck als auch False-Ausdruck müssen angegeben werden. Im nachfolgenden Programm im Projekt FunktionIIf wird das Maximum der beiden Zahlen x und y ermittelt und ausgegeben: Private Sub CmdAnzeige_Click(...) Handles... Dim x, y As Integer x=5 y=3 LblAnzeige.Text = IIf(x > y, x, y) Listing 2.15 Projekt»FunktionIIf«Übung USteuerbetrag Schreiben Sie ein Programm, das zu einem eingegebenen Gehalt den Steuerbetrag berechnet und ausgibt, siehe Abbildung In Tabelle 2.13 sind die Steuersätze angegeben. Es wird davon ausgegangen, dass das gesamte Gehalt zum angegebenen Satz versteuert wird. Erstellen Sie das Programm in zwei Versionen: mithilfe von If Else beziehungsweise mithilfe von Select Case. Abbildung 2.26 Übung USteuerbetrag Übung»USteuerbetrag«Wert aus Liste Funktion Choose Die Funktion Choose() gibt den Wert aus einer Liste zurück, dessen Position dem Indexwert entspricht. Die Positionen in der Liste beginnen allerdings bei 1, nicht bei 0. Die Syntax lautet: Choose(Index, Ausdruck1, [Ausdruck2]...) Gehalt Steuersatz von 0 bis einschließlich % von über bis einschließlich % von über bis einschließlich % über % Im nachfolgenden Programm im Projekt FunktionChoose wird eine Währung aus einer Liste von Währungen ausgewählt und ausgegeben: Private Sub CmdAnzeige_Click(...) Handles... Dim x As Integer x=2 LblAnzeige.Text = Choose(x, "US Dollar", "Pfund", "Euro") Listing 2.16 Projekt»FunktionChoose«Tabelle 2.13 Übung USteuerbetrag Übung UKranVerzweigung Erweitern Sie die Übung UKran. Die Bewegung des Krans soll kontrolliert werden. Kein Teil des Krans darf zu groß oder zu klein werden. Der Kran darf sich nicht über die sinnvollen Begrenzungen hinausbewegen. Nutzen Sie Bedingungen und Verzweigungen, um das zu verhindern. 2.5 Verzweigungen und Steuerelemente In diesem Abschnitt geht es um Kontrollkästchen und Optionsschaltflächen bzw. Gruppen von Optionsschaltflächen. Damit können Sie Zustände Übung»UKran- Verzweigung«72 73

32 2 Grundlagen 2.5 Verzweigungen und Steuerelemente CheckBox CheckedChanged An/Aus unterscheiden bzw. Eigenschaften einstellen. Dazu benötigen Sie Verzweigungen, die Gegenstand des vorherigen Abschnitts waren Kontrollkästchen Das Kontrollkästchen (CheckBox) bietet dem Benutzer die Möglichkeit, zwischen zwei Zuständen zu wählen, z. B. An oder Aus, wie bei einem Schalter. Sie können damit auch kennzeichnen, ob Sie eine bestimmte optionale Erweiterung wünschen oder nicht. Der Benutzer bedient ein Kontrollkästchen, indem er ein Häkchen setzt oder entfernt. Das wichtigste Ereignis ist beim Kontrollkästchen nicht der Click, sondern das Ereignis CheckedChanged. Dieses Ereignis zeigt nicht nur an, dass der Benutzer das Kontrollkästchen bedient hat, sondern auch, dass es seinen Zustand geändert hat. Das kann beispielsweise auch durch Programmcode geschehen. Eine Ereignisprozedur zu CheckedChanged löst in jedem Fall etwas aus, sobald das Kontrollkästchen (vom Benutzer oder vom Programmcode) geändert wird. Allerdings wird der Programmablauf meist so gestaltet, dass bei einem anderen Ereignis der aktuelle Zustand des Kontrollkästchens (An/Aus) abgefragt und anschließend entsprechend reagiert wird. If ChkSchalter.Checked Then LblTest1.Text = "An" Else LblTest1.Text = "Aus" Private Sub ChkSchalter_CheckedChanged(...) Handles _ ChkSchalter.CheckedChanged If ChkSchalter.Checked Then LblTest2.Text = "An" Else LblTest2.Text = "Aus" Private Sub CmdUmschalten_Click(...) Handles... ChkSchalter.Checked = Not ChkSchalter.Checked Listing 2.17 Projekt»Kontrollkaestchen«2 Checked Die wichtigen Eigenschaften des Kontrollkästchens sind: Checked der Zustand der CheckBox, mit den Werten True und False Text die Beschriftung neben dem Kontrollkästchen Zur Erläuterung: Den Zustand eines Kontrollkästchens (Häkchen gesetzt oder nicht) können Sie im Programm mithilfe einer einfachen Verzweigung auswerten. Das Projekt Kontrollkaestchen nutzt alle oben genannten Möglichkeiten, siehe Abbildung Normalerweise werden bei einer Bedingung in einer Verzweigung zwei Werte durch Vergleichsoperatoren miteinander verglichen und eines der beiden Ergebnisse True oder False ermittelt. Da die Eigenschaft Checked aber bereits einem solchen Wahrheitswert entspricht, kann die Bedingung auch verkürzt formuliert werden. If ChkSchalter.Checked = True... hätte also das gleiche Ergebnis erzeugt. Die Prozedur CmdPruefenClick() wird aufgerufen, wenn der Benutzer den Button Schalter prüfen betätigt. Erst in diesem Moment wird der Zustand des Kontrollkästchens (Eigenschaft Checked gleich True oder False) abgefragt und im ersten Label ausgegeben. Es kann also sein, dass das Kontrollkästchen vor längerer Zeit oder noch nie benutzt wurde. Dagegen wird die Prozedur ChkSchalter_CheckedChanged() sofort aufgerufen, wenn der Benutzer das Kontrollkästchen benutzt, also ein Häkchen setzt oder entfernt. Die Prozedur wird auch für den Fall aufgerufen, Wahrheitswert Abbildung 2.27 Zustand nach Klick auf Kontrollkästchen Der Programmcode: Private Sub CmdPruefen_Click(...) Handles

33 2 Grundlagen 2.5 Verzweigungen und Steuerelemente dass der Benutzer den Zustand des Kontrollkästchens durch Programmcode ändert. Hier wird der Zustand des Kontrollkästchens also unmittelbar nach der Änderung ausgegeben (im zweiten Label). 2 RadioButton CheckedChanged Checked Die Prozedur CmdUmschalten_Click() dient zum Umschalten des Kontrollkästchens per Programmcode. Das kommt in Windows-Anwendungen häufig vor, wenn es logische Zusammenhänge zwischen mehreren Steuerelementen gibt. Die Eigenschaft Checked wird mithilfe des logischen Operators Not auf True bzw. auf False gesetzt. Das führt wiederum zum Ereignis ChkSchalter_CheckedChanged und dem Ablauf der zugehörigen, oben erläuterten Ereignisprozedur Optionsschaltfläche Optionsschaltflächen (RadioButtons) treten immer in Gruppen auf und bieten dem Benutzer die Möglichkeit, zwischen zwei oder mehr Möglichkeiten zu wählen, etwa zwischen den Farben Rot, Grün oder Blau. Bei zusammengehörigen Optionsschaltflächen kann der Benutzer genau eine per Klick auswählen. Alle anderen werden anschließend automatisch als Nicht ausgewählt gekennzeichnet. Analog zum Kontrollkästchen ist das wichtigste Ereignis bei einer Optionsschaltfläche CheckedChanged. Dieses Ereignis zeigt an, dass die betreffende Optionsschaltfläche ihren Zustand geändert hat. Das kann auch durch Programmcode geschehen. Der Programmablauf wird hier meist so gestaltet, dass bei einem anderen Ereignis die aktuelle Auswahl innerhalb der Gruppe abgefragt wird und anschließend je nach Zustand unterschiedlich reagiert wird. Es ist guter Programmierstil und verringert Folgefehler, wenn Sie eine der Optionsschaltflächen der Gruppe bereits zur Entwicklungszeit auf True setzen. Das muss nicht notwendigerweise die erste Optionsschaltfläche der Gruppe sein. Die wichtigen Eigenschaften der Optionsschaltflächen sind Checked (mit den Werten True und False) und Text (zur Beschriftung). Das nachfolgende Programm im Projekt Optionen nutzt alle genannten Möglichkeiten. Es wird der Zustand angezeigt, nachdem der Benutzer Blau gewählt, den Button Prüfen betätigt und Grün gewählt hat (siehe Abbildung 2.28). Abbildung 2.28 Zustand nach den genannten Aktionen Der Programmcode: Private Sub CmdPruefen_Click(...) Handles... If OptFarbeRot.Checked Then LblAnzeige1.Text = "Rot" ElseIf OptFarbeGruen.Checked Then LblAnzeige1.Text = "Grün" Else LblAnzeige1.Text = "Blau" Private Sub OptFarbeRot_CheckedChanged(...) Handles _ OptFarbeRot.CheckedChanged If OptFarbeRot.Checked Then LblAnzeige2.Text = "Rot" Private Sub OptFarbeGruen_CheckedChanged(...) Handles _ OptFarbeGruen.CheckedChanged If OptFarbeGruen.Checked Then LblAnzeige2.Text = "Grün" Private Sub OptFarbeBlau_CheckedChanged(...) Handles _ OptFarbeBlau.CheckedChanged If OptFarbeBlau.Checked Then 76 77

34 2 Grundlagen 2.5 Verzweigungen und Steuerelemente LblAnzeige2.Text = "Blau" ändert sich der Wert der Eigenschaft bei der bisher gültigen Optionsschaltfläche. 2 Auswahl oder Abwahl Private Sub CmdSchalter_Click(...) Handles... OptFarbeRot.Checked = True Listing 2.18 Projekt»Optionen«Zur Erläuterung: Den Zustand einer einzelnen Optionsschaltfläche können Sie im Programm mithilfe einer einfachen Verzweigung auswerten. Es muss festgestellt werden, ob diese Optionsschaltfläche ausgewählt oder abgewählt wurde. In beiden Fällen tritt das Ereignis CheckedChanged auf. Den Zustand einer Gruppe von Optionsschaltflächen können Sie im Programm mithilfe einer mehrfachen Verzweigung auswerten. Die Prozedur CmdPruefen_Click() wird aufgerufen, wenn der Benutzer den Button Prüfen betätigt. Erst in diesem Moment wird der Zustand der Gruppe abgefragt und im ersten Label ausgegeben. Dagegen wird eine der Prozeduren OptFarbeRot_CheckedChanged() (bzw.... OptGruen... oder... OptBlau...) sofort aufgerufen, wenn der Benutzer eine der Optionsschaltflächen auswählt. Diese Prozeduren werden auch für den Fall aufgerufen, dass der Benutzer den Zustand der zugehörigen Optionsschaltfläche durch Programmcode ändert. Hier wird der Zustand der Gruppe also unmittelbar nach der Änderung ausgegeben (im zweiten Label). Die Prozedur CmdSchalter_Click() dient der Auswahl einer bestimmten Optionsschaltfläche per Programmcode. Das kommt in Windows-Anwendungen häufig vor, wenn es logische Zusammenhänge zwischen mehreren Steuerelementen gibt. Die Eigenschaft Checked wird auf True gesetzt. Das führt wiederum zum Ereignis CheckedChanged der jeweiligen Optionsschaltfläche und zum Ablauf der zugehörigen, oben erläuterten Ereignisprozedur. Innerhalb eines Formulars oder einer GroupBox (siehe Abschnitt 2.5.4) kann immer nur bei einer Optionsschaltfläche die Eigenschaft Checked den Wert True haben. Sobald eine andere Optionsschaltfläche angeklickt wird, Mehrere Ereignisse in einer Prozedur behandeln Das folgende Projekt MehrereEreignisse stellt eine häufig verwendete Technik vor. Gibt es mehrere Ereignisse, die auf die gleiche oder auf ähnliche Weise behandelt werden sollen, ist es vorteilhaft, diese Ereignisse mit einer gemeinsamen Ereignisprozedur aufzurufen. Das ist möglich, da nach dem Schlüsselwort Handles zu Beginn der Ereignisprozedur mehrere Ereignisse genannt werden können. Das nachfolgende Programm verwendet diese Technik, um den Zustand einer Gruppe von Optionsschaltflächen sofort anzuzeigen, wenn der Benutzer eine der Optionsschaltflächen auswählt, siehe Abbildung Abbildung 2.29 Mehrere Ereignisse in einer Prozedur Der Programmcode: Private Sub OptFarbeRot_CheckedChanged(...) Handles _ OptFarbeRot.CheckedChanged, OptFarbeGruen.CheckedChanged, OptFarbeBlau.CheckedChanged If OptFarbeRot.Checked Then LblAnzeige.Text = "Rot" ElseIf OptFarbeGruen.Checked Then LblAnzeige.Text = "Grün" Else LblAnzeige.Text = "Blau" Listing 2.19 Projekt»MehrereEreignisse«Handles 78 79

35 2 Grundlagen 2.5 Verzweigungen und Steuerelemente Container GroupBox Zuordnung Zur Erläuterung: Die Prozedur OptFarbeRot_CheckedChanged() wird durch alle drei Checked- Changed-Ereignisse aufgerufen. Zunächst wird die Prozedur für das Ereignis CheckedChanged der Optionsschaltfläche OptRot wie gewohnt erstellt. Bei den beiden anderen Optionsschaltflächen wechseln Sie für die Zuordnung der Ereignisprozedur im Eigenschaftenfenster jeweils auf die Ansicht Ereignisse. Anschließend wählen Sie aus der Liste, die Sie rechts neben dem Ereignis CheckedChanged aufklappen können, den vorhandenen Eintrag OptFarbeRot_CheckedChanged() aus Mehrere Gruppen von Optionsschaltflächen Falls in den beiden letzten Programmen weitere Optionsschaltflächen hinzugefügt werden, gilt nach wie vor: Nur eine der Optionsschaltflächen ist ausgewählt. Benötigen Sie aber innerhalb eines Formulars mehrere voneinander unabhängige Gruppen von Optionsschaltflächen, wobei in jeder der Gruppen jeweils nur eine Optionsschaltfläche ausgewählt sein soll, müssen Sie jede Gruppe einzeln in einen Container setzen. Ein Formular ist bereits ein Container, wir benötigen also einen weiteren Container. Als ein solcher Container kann beispielsweise das Steuerelement Gruppe (GroupBox) dienen. Mit der Zuweisung der Eigenschaft Text der GroupBox geben Sie eine Beschriftung an. Falls eine GroupBox markiert ist, wird eine neu erzeugte Optionsschaltfläche dieser GroupBox zugeordnet. Sie reagiert gemeinsam mit den anderen Optionsschaltflächen in dieser GroupBox. Anderenfalls wird sie dem Formular zugeordnet und reagiert gemeinsam mit den anderen Optionsschaltflächen, die im Formular außerhalb von GroupBoxen stehen. Sie können eine bereits erzeugte Optionsschaltfläche auch im Nachhinein ausschneiden, das Ziel markieren und sie wieder einfügen, um die Zuordnung zu ändern. Das Projekt Optionsgruppen verwendet zwei voneinander unabhängige Gruppen von Optionen, siehe Abbildung Abbildung 2.30 Zwei Gruppen von RadioButtons Der zugehörige Code: Private AusgabeUrlaubsort As String Private AusgabeUnterkunft As String Private Sub OptBerlin_CheckedChanged(...) Handles _ OptBerlin.CheckedChanged, OptRom.CheckedChanged, OptParis.CheckedChanged ' Urlaubsort If OptBerlin.Checked Then AusgabeUrlaubsort = "Berlin" ElseIf OptParis.Checked Then AusgabeUrlaubsort = "Paris" Else AusgabeUrlaubsort = "Rom" LblAnzeige.Text = AusgabeUrlaubsort & ", " & AusgabeUnterkunft Private Sub OptAppartement_CheckedChanged(...) Handles _ OptAppartement.CheckedChanged, OptPension.CheckedChanged, OptHotel.CheckedChanged ' Unterkunft If OptAppartement.Checked Then AusgabeUnterkunft = "Appartement" ElseIf OptPension.Checked Then AusgabeUnterkunft = "Pension" Else

36 2 Grundlagen 2.5 Verzweigungen und Steuerelemente AusgabeUnterkunft = "Hotel" LblAnzeige.Text = AusgabeUrlaubsort & ", " & AusgabeUnterkunft Prozedur ohne Ereignis, Modularisierung Bisher ging es nur um Prozeduren, die mit einem Ereignis zusammenhingen. Darüber hinaus können Sie aber auch unabhängige, allgemeine Prozeduren schreiben, die von anderen Stellen des Programms aus aufgerufen werden. Diese Prozeduren können Sie direkt im Codefenster eingeben. Allgemeine Prozedur 2 Listing 2.20 Projekt»Optionsgruppen«Nachfolgend das Programm im Projekt ProzedurOhneEreignis, es handelt sich dabei um eine geänderte Version des Programms im Projekt Optionsgruppen: Zur Erläuterung: Bei einer Urlaubsbuchung können Zielort und Art der Unterkunft unabhängig voneinander gewählt werden. Es gibt also zwei Gruppen von Optionsschaltflächen, jede in einer eigenen GroupBox. Private AusgabeUrlaubsort As String Private AusgabeUnterkunft As String Übung»UKranOptionen«Bei Auswahl einer der drei Optionsschaltflächen in einer Gruppe wird jeweils die gleiche Prozedur aufgerufen. In den Prozeduren wird den klassenweit gültigen Variablen AusgabeUrlaubsort bzw. AusgabeUnterkunft ein Wert zugewiesen und anschließend ausgegeben. Die Variablen müssen klassenweit gültig deklariert werden, damit sie in der jeweils anderen Prozedur zur Verfügung stehen. Übung Erweitern Sie die Übung UKranVerzweigung. Die Bewegung des Krans soll per Zeitgeber (Timer) gesteuert werden. Der Benutzer wählt zunächst über eine Gruppe von Optionsschaltflächen aus, welche Bewegung der Kran ausführen soll. Anschließend betätigt er den Button Start, siehe Abbildung Die Bewegung wird so lange ausgeführt, bis der Benutzer den Button Stop drückt oder eine Begrenzung erreicht wird. Private Sub OptUrlaubsort_CheckedChanged(...) Handles _ OptBerlin.CheckedChanged, OptRom.CheckedChanged, OptParis.CheckedChanged ' Urlaubsort If OptBerlin.Checked Then AusgabeUrlaubsort = "Berlin" ElseIf OptParis.Checked Then AusgabeUrlaubsort = "Paris" Else AusgabeUrlaubsort = "Rom" Anzeigen() Abbildung 2.31 Übung UKranOptionen Private Sub OptUnterkunft_CheckedChanged(...) Handles _ OptAppartement.CheckedChanged, OptPension.CheckedChanged, OptHotel.CheckedChanged ' Unterkunft If OptAppartement.Checked Then AusgabeUnterkunft = "Appartement" ElseIf OptPension.Checked Then AusgabeUnterkunft = "Pension" Else AusgabeUnterkunft = "Hotel" 82 83

37 2 Grundlagen 2.5 Verzweigungen und Steuerelemente Anzeigen() 2 Private Sub Anzeigen() LblAnzeige.Text = AusgabeUrlaubsort & ", " & AusgabeUnterkunft Abbildung 2.32 Farbe über Schieberegler einstellen Listing 2.21 Projekt»ProzedurOhneEreignis«Das Ereignis ValueChanged eines Schiebereglers zeigt an, dass der Wert geändert wird. In diesem Projekt führt dieses Ereignis von allen drei Schiebereg- ValueChanged Zur Erläuterung: lern zur selben Prozedur. Am Ende der beiden Ereignisprozeduren OptUnterkunft_CheckedChan- Zunächst der Code des Programms: ged() und OptUrlaubsort_CheckedChanged() steht jeweils die Anweisung Anzeigen(). Dabei handelt es sich um einen Aufruf der Prozedur Anzeigen(). Diese Prozedur steht weiter unten. Sie ist nicht direkt an ein Ereignis Private Sub Form1_Load(...) Handles MyBase.Load FarbeAnzeigen() gekoppelt. Vorteil dieser Vorgehensweise: Gemeinsam genutzte Programmteile können ausgelagert werden und müssen nur einmal geschrieben werden. Man nennt diesen Vorgang bei der Programmierung auch Modularisierung. In Abschnitt 4.7 wird dieses Thema noch genauer behandelt. Zur Erstellung der Prozedur OptUrlaubsort_CheckedChanged() wechseln Sie im Eigenschaftenfenster für eine der Optionsschaltflächen, zum Beispiel Private Sub FarbeAnzeigen() PanFarbe.BackColor = Color.FromArgb( TrkRot.Value, TrkGruen.Value, TrkBlau.Value) LblRotWert.Text = TrkRot.Value LblGruenWert.Text = TrkGruen.Value LblBlauWert.Text = TrkBlau.Value Zahlenwert einstellen OptBerlin, auf die Ansicht EREIGNISSE. Anschließend tragen sie den Namen der Prozedur in dem Feld rechts neben dem Ereignis CheckedChanged ein und betätigen die Taste ( ). Anschließend können Sie den Code der Prozedur eintragen. Für die beiden anderen Optionsschaltflächen wählen Sie nur noch die vorhandene Ereignisprozedur aus, siehe Abschnitt Schieberegler Das Steuerelement Schieberegler (engl.: Trackbar) dient zur komfortablen Einstellung eines Zahlenwerts. Im nachfolgenden Projekt Schieberegler werden drei dieser Steuerelemente dazu genutzt, die Hintergrundfarbe eines Panels einzustellen, siehe auch Abbildung Private Sub WertGeaendert(...) Handles _ TrkRot.ValueChanged, TrkGruen.ValueChanged, TrkBlau.ValueChanged FarbeAnzeigen() Listing 2.22 Projekt»Schieberegler«Zur Erläuterung: Die Prozedur zum Laden des Formulars und die Betätigung eines der drei Schieberegler führt zum Aufruf der Prozedur FarbeAnzeigen(). Color.FromArgb() 84 85

38 2 Grundlagen Darin wird die Methode FromArgb() der Struktur Color aufgerufen, die drei Werte (Rot, Grün, Blau) zur Einstellung der Hintergrundfarbe des Panels benötigt. Diese drei Werte werden mithilfe der Eigenschaft Value von den Schiebereglern geliefert. Ein Startwert von 0 für alle drei Schieberegler ergibt die Farbe Schwarz. 왘 Neben jedem Schieberegler ist ein zusätzliches Label platziert, in dem der aktuelle Wert als Zahl angezeigt wird. 왘 Die Eigenschaften Minimum und Maximum stehen für den Zahlenbereich des Schiebereglers, hier von 0 bis 255. LargeChange, SmallChange 왘 Falls der Benutzer rechts oder links neben dem Schieberegler klickt, wird der Wert um den Eigenschaftswert von LargeChange verändert (hier: 32). Falls der Schieberegler den Fokus hat, also das aktuelle Steuerelement ist, und der Benutzer eine der Pfeiltasten betätigt, wird der Wert um den Eigenschaftswert von SmallChange verändert (hier: 8). TickFrequency 왘 Die Eigenschaft TickFrequency steht für den Abstand der Markierungen am Schieberegler (hier: 16). 2.6 Schleifen Schleifen werden in Programmen häufig benötigt. Sie ermöglichen den mehrfachen Durchlauf von Anweisungen. Darin liegt eine besondere Stärke der Programmierung allgemein: die schnelle wiederholte Bearbeitung ähnlicher Vorgänge. Es gibt die Schleifenstrukturen: Do... Loop, For... Next, For Each... In... und With. Mithilfe der Strukturen steuern Sie die Wiederholungen eines Anweisungsblocks (die Anzahl der Schleifendurchläufe). Dabei wird der Wahrheitswert eines Ausdrucks (der Schleifenbedingung) oder der Wert eines numerischen Ausdrucks (Wert des Schleifenzählers) benötigt. Auflistung Die Schleife For Each... In... wird bei Feldern oder Auflistungen (engl.: Collections) eingesetzt. Die Anweisung With dient der Steuerung einer besonderen Schleife mit nur einem Durchlauf For... Next Falls die Anzahl der Schleifendurchläufe bekannt oder vor Beginn der Schleife berechenbar ist, sollten Sie die For...Next-Schleife verwenden. Ihr Aufbau sieht wie folgt aus: 86

39 Anhang B Lösungen der Übungsaufgaben Die Bearbeitung der Beispiele, das Verständnis für ihren Aufbau sowie das selbständige Lösen der Übungen sind ein wichtiger Schritt beim Erlernen der Programmierung. In diesem Abschnitt finden Sie jeweils eine Lösungsmöglichkeit zu jeder Übung. Lassen Sie sich nicht irritieren, wenn Ihre Lösung anders aussieht. Es ist in erster Linie wichtig, dass das Ergebnis stimmt. Vielleicht bietet Ihnen die hier vorliegende Lösung aber auch einen Denkanstoß zur Verbesserung. B.1 Lösung der Übungsaufgabe aus Kapitel 1 B.1.1 Lösung UName Private Sub CmdMyName_Click(sender As Object, e As EventArgs) Handles CmdMyName.Click LblMyName.Text = "Bodo Basic" Private Sub CmdEnde_Click(sender As Object, e As EventArgs) Handles CmdEnde.Click Close() B.2 Lösungen der Übungsaufgaben aus Kapitel 2 B.2.1 Lösung UDatentypen Private Sub CmdAnzeigen_Click(...) Handles... Dim nachname, vorname As String 503

40 B Lösungen der Übungsaufgaben B.2 Lösungen der Übungsaufgaben aus Kapitel 2 Dim strasse, plz, ort As String Dim alter As Integer Dim geburtsdatum As Date nachname = "Basic" vorname = "Bodo" strasse = "Bergstraße 34" plz = "09445" ort = "Brunnstadt" alter = 29 geburtsdatum = " " LblAnzeige.Text = "Adresse: " & vbcrlf & vorname & " " & nachname & vbcrlf & strasse & vbcrlf & plz & " " & ort & vbcrlf & vbcrlf & "geb.: " & geburtsdatum & vbcrlf & "Alter: "& alter B.2.2 Lösung UGueltigkeitsbereich Private x As Double Private Sub CmdAnzeigen1_Click(...) Handles... Dim y As Double y=y+0.1 x=x+0.1 LblAnzeige.Text = "x: " & x & vbcrlf & "y: " & y Private Sub CmdAnzeigen2_Click(...) Handles... Dim z As Double z=z+0.1 x=x+0.1 LblAnzeige.Text = "x: " & x & vbcrlf & "z: " & z B.2.3 Lösung URechenoperatoren Private Sub CmdAnzeigen1_Click(...) Handles... Dim x As Double x=3*-2.5+4*2 LblAnzeige.Text = x Private Sub CmdAnzeigen2_Click(...) Handles... Dim x As Double x = 3 * ( ) * 2 LblAnzeige.Text = x B.2.4 Lösung UVergleichsoperatoren Private Sub CmdAnzeigen1_Click(...) Handles... Dim p As Boolean p = 12-3 >= 4 * 2.5 LblAnzeige.Text = p Private Sub CmdAnzeigen2_Click(...) Handles... Dim p As Boolean p = "Maier" Like "M??er" LblAnzeige.Text = p B.2.5 Lösung ULogischeOperatoren Private Sub CmdAnzeigen1_Click(...) Handles... Dim p As Boolean p=4>3and-4>-3 LblAnzeige.Text = p

41 B Lösungen der Übungsaufgaben B.2 Lösungen der Übungsaufgaben aus Kapitel 2 Private Sub CmdAnzeigen2_Click(...) Handles... Dim p As Boolean p=4>3or-4>-3 LblAnzeige.Text = p h.height = h.height + 10 Private Sub CmdHakenEin_Click(...) Handles... h.height = h.height - 10 B.2.6 Lösung UOperatoren 1: False, 2: True, 3: True, 4: True, 5: True, 6: False, 7: True, 8: False B.2.7 Lösung UPanelZeitgeber Private Sub CmdStart_Click(...) Handles... TimPanel.Enabled = True Private Sub TimPanel_Tick(...) Handles TimPanel.Tick Pan1.Location = New Point(Pan1.Location.X - 5, Pan1.Location.Y - 5) Pan2.Location = New Point(Pan2.Location.X + 5, Pan2.Location.Y - 5) Pan3.Location = New Point(Pan3.Location.X - 5, Pan3.Location.Y + 5) Pan4.Location = New Point(Pan4.Location.X + 5, Pan4.Location.Y + 5) B.2.8 Lösung UKran Bezeichnungen: f: Fundament s: senkrechtes Hauptelement a: waagerechter Ausleger h: senkrechter Haken am Ausleger Private Sub CmdHakenAus_Click(...) Handles... Private Sub CmdAuslegerAus_Click(...) Handles... a.width = a.width + 10 a.location = New Point(a.Location.X - 10, a.location.y) h.location = New Point(h.Location.X - 10, h.location.y) Private Sub CmdAuslegerEin_Click(...) Handles... a.width = a.width - 10 a.location = New Point(a.Location.X + 10, a.location.y) h.location = New Point(h.Location.X + 10, h.location.y) Private Sub CmdKranRechts_Click(...) Handles... f.location = New Point(f.Location.X + 10, f.location.y) s.location = New Point(s.Location.X + 10, s.location.y) a.location = New Point(a.Location.X + 10, a.location.y) h.location = New Point(h.Location.X + 10, h.location.y) Private Sub CmdKranLinks_Click(...) Handles... f.location = New Point(f.Location.X - 10, f.location.y) s.location = New Point(s.Location.X - 10, s.location.y) a.location = New Point(a.Location.X - 10, a.location.y) h.location = New Point(h.Location.X - +10, h.location.y) Private Sub CmdKranAus_Click(...) Handles... s.height = s.height + 10 s.location = New Point(s.Location.X, s.location.y - 10) a.location = New Point(a.Location.X, a.location.y - 10) h.location = New Point(h.Location.X, h.location.y - 10)

42 B Lösungen der Übungsaufgaben B.2 Lösungen der Übungsaufgaben aus Kapitel 2 Private Sub CmdKranEin_Click(...) Handles... s.height = s.height - 10 s.location = New Point(s.Location.X, s.location.y + 10) a.location = New Point(a.Location.X, a.location.y + 10) h.location = New Point(h.Location.X, h.location.y + 10) B.2.9 Lösung USteuerbetrag, zwei Möglichkeiten Private Sub CmdBerechnen1_Click(...) Handles... Dim gehalt, steuersatz, steuerbetrag As Double gehalt = Convert.ToDouble(TxtGehalt.Text) If gehalt <= Then steuersatz = 12 ElseIf gehalt <= Then steuersatz = 15 ElseIf gehalt <= Then steuersatz = 20 Else steuersatz = 25 steuerbetrag = gehalt * steuersatz / 100 LblSteuerbetrag.Text = steuerbetrag Private Sub CmdBerechnen2_Click(...) Handles... Dim gehalt, steuersatz, steuerbetrag As Double gehalt = Convert.ToDouble(TxtGehalt.Text) Select Case gehalt Case Is <= steuersatz = 12 Case Is <= steuersatz = 15 Case Is <= steuersatz = 20 Case Else steuersatz = 25 End Select steuerbetrag = gehalt * steuersatz / 100 LblSteuerbetrag.Text = steuerbetrag B.2.10 Bezeichnungen: Lösung UKranVerzweigung f: Fundament s: senkrechtes Hauptelement a: waagerechter Ausleger h: senkrechter Haken am Ausleger Private Sub CmdHakenAus_Click(...) Handles... If h.location.y + h.height + 5 < f.location.y Then h.height = h.height + 10 Private Sub CmdHakenEin_Click(...) Handles... If h.height > 15 Then h.height = h.height - 10 Private Sub CmdAuslegerAus_Click(...) Handles... If a.location.x > 15 Then a.width = a.width + 10 a.location = New Point(a.Location.X - 10, a.location.y) h.location = New Point(h.Location.X - 10, h.location.y) Private Sub CmdAuslegerEin_Click(...) Handles... If a.width > 30 Then

43 B Lösungen der Übungsaufgaben B.2 Lösungen der Übungsaufgaben aus Kapitel 2 a.width = a.width - 10 a.location = New Point(a.Location.X + 10, a.location.y) h.location = New Point(h.Location.X + 10, h.location.y) Private Sub CmdKranRechts_Click(...) Handles... If f.location.x < 215 Then f.location = New Point(f.Location.X + 10, f.location.y) s.location = New Point(s.Location.X + 10, s.location.y) a.location = New Point(a.Location.X + 10, a.location.y) h.location = New Point(h.Location.X + 10, h.location.y) Private Sub CmdKranLinks_Click(...) Handles... If f.location.x > 15 And a.location.x > 15 Then f.location = New Point(f.Location.X - 10, f.location.y) s.location = New Point(s.Location.X - 10, s.location.y) a.location = New Point(a.Location.X - 10, a.location.y) h.location = New Point(h.Location.X - 10, h.location.y) Private Sub CmdKranAus_Click(...) Handles... If s.location.y > 15 Then s.height = s.height + 10 s.location = New Point(s.Location.X, s.location.y - 10) a.location = New Point(a.Location.X, a.location.y - 10) h.location = New Point(h.Location.X, h.location.y - 10) Private Sub CmdKranEin_Click(...) Handles... If h.location.y + h.height + 5 < f.location.y Then s.height = s.height - 10 s.location = New Point(s.Location.X, s.location.y + 10) a.location = New Point(a.Location.X, a.location.y + 10) h.location = New Point(h.Location.X, h.location.y + 10) B.2.11 Lösung UKranOptionen Bezeichnungen: f: Fundament s: senkrechtes Hauptelement a: waagerechter Ausleger h: senkrechter Haken am Ausleger Private Sub CmdStart_Click(...) Handles... TimKran.Enabled = True Private Sub CmdStop_Click(...) Handles... TimKran.Enabled = False Private Sub Tim1_Tick(...) Handles TimKran.Tick If OptHakenAus.Checked Then If h.location.y + h.height + 5 < f.location.y Then h.height = h.height + 10 Else TimKran.Enabled = False ElseIf OptHakenEin.Checked Then If h.height > 15 Then h.height = h.height - 10 Else TimKran.Enabled = False ElseIf OptAuslegerAus.Checked Then If a.location.x > 15 Then a.width = a.width + 10 a.location = New Point(a.Location.X - 10, a.location.y) h.location = New Point(h.Location.X - 10, h.location.y) Else TimKran.Enabled = False

44 B Lösungen der Übungsaufgaben B.2 Lösungen der Übungsaufgaben aus Kapitel 2 ElseIf OptAuslegerEin.Checked Then If a.width > 25 Then a.width = a.width - 10 a.location = New Point(a.Location.X + 10, a.location.y) h.location = New Point(h.Location.X + 10, h.location.y) Else TimKran.Enabled = False ElseIf OptKranRechts.Checked Then If f.location.x < 215 Then f.location = New Point(f.Location.X + 10, f.location.y) s.location = New Point(s.Location.X + 10, s.location.y) a.location = New Point(a.Location.X + 10, a.location.y) h.location = New Point(h.Location.X + 10, h.location.y) Else TimKran.Enabled = False ElseIf OptKranLinks.Checked Then If f.location.x > 15 And a.location.x > 15 Then f.location = New Point(f.Location.X - 10, f.location.y) s.location = New Point(s.Location.X - 10, s.location.y) a.location = New Point(a.Location.X - 10, a.location.y) h.location = New Point(h.Location.X - 10, h.location.y) Else TimKran.Enabled = False ElseIf OptKranAus.Checked Then If s.location.y > 15 Then s.height = s.height + 10 s.location = New Point(s.Location.X, s.location.y - 10) a.location = New Point(a.Location.X, a.location.y - 10) h.location = New Point(h.Location.X, h.location.y - 10) Else TimKran.Enabled = False ElseIf OptKranEin.Checked Then If h.location.y + h.height + 5 < f.location.y Then s.height = s.height - 10 s.location = New Point(s.Location.X, s.location.y + 10) a.location = New Point(a.Location.X, a.location.y + 10) h.location = New Point(h.Location.X, h.location.y + 10) Else TimKran.Enabled = False B.2.12 Lösung UForNext1 Private Sub CmdAnzeigen_Click(...) Handles... Dim d As Double LblAnzeige.Text = "" For d = 35 To 20 Step -2.5 LblAnzeige.Text &= d & vbcrlf Next d B.2.13 Lösung UForNext2 Private Sub CmdAnzeigen_Click(...) Handles... Dim d, summe, zaehler, mittelwert As Double

45 Auf einen Blick Auf einen Blick 1 Einführung Grundlagen Fehlerbehandlung Erweiterte Grundlagen Objektorientierte Programmierung Wichtige Klassen in.net Weitere Elemente eines Windows-Programms Datenbankanwendungen mit ADO.NET Internetanwendungen mit ASP.NET Zeichnen mit GDI Beispielprojekte Windows Presentation Foundation

46 Inhalt Inhalt 1 Einführung Aufbau dieses Buchs Visual Studio Mein erstes Windows-Programm Visual-Basic-Entwicklungsumgebung Ein neues Projekt... Einfügen von Steuerelementen... Arbeiten mit dem Eigenschaften-Fenster... Speichern eines Projekts... Das Codefenster... Schreiben von Programmcode... Kommentare... Starten, Ausführen und Beenden des Programms... Ausführbares Programm... Projekt schließen, Projekt öffnen... Übung... Regeln für Zeilenumbrüche Arbeiten mit Steuerelementen Steuerelemente formatieren... Steuerelemente kopieren... Eigenschaften zur Laufzeit ändern... Vergabe und Verwendung von Namen... Verknüpfung von Texten, mehrzeilige Texte... Eigenschaft BackColor, Farben allgemein... 2 Grundlagen Variablen und Datentypen Namen und Werte... Deklarationen... Datentypen... 5

47 Inhalt Inhalt Gültigkeitsbereich Konstanten Enumerationen Operatoren Rechenoperatoren Vergleichsoperatoren Logische Operatoren Verkettungsoperator Zuweisungsoperatoren Rangfolge der Operatoren Einfache Steuerelemente Panel Zeitgeber Textfelder Zahlenauswahlfeld Verzweigungen Einzeiliges If... Then... Else If...Then...Else-Block Select Case Funktion IIf Funktion Choose Übungen Verzweigungen und Steuerelemente Kontrollkästchen Optionsschaltfläche Mehrere Ereignisse in einer Prozedur behandeln Mehrere Gruppen von Optionsschaltflächen Prozedur ohne Ereignis, Modularisierung Schieberegler Schleifen For... Next Do... Loop Ein Würfel With Übungen Schleifen und Steuerelemente Listenfeld Listenfeld füllen Wichtige Eigenschaften For Each In Wechsel der Auswahl Wichtige Methoden Mehrfachauswahl Kombinationsfelder Fehlerbehandlung Entwicklung eines Programms Fehlerarten Syntaxfehler und IntelliSense Laufzeitfehler und Exception Handling Programm mit Laufzeitfehlern Einfaches Exception Handling Erweitertes Exception Handling Logische Fehler und Debugging Haltepunkte und Einzelschrittverfahren Überwachungsfenster Erweiterte Grundlagen Steuerelemente aktivieren Ereignis Enter Eigenschaften Enabled und Visible Bedienung per Tastatur Eigenschaften TabIndex und TabStop Tastenkombination für Steuerelemente Ereignisgesteuerte Programmierung Eine Ereigniskette Endlose Ereignisketten Textfelder koppeln Tastatur und Maus

48 Inhalt Inhalt 4.4 Mehrere Formulare Allgemeine Code-Module Datenfelder Eindimensionale Datenfelder Ein Feld durchsuchen Weitere Feld-Operationen Mehrdimensionale Datenfelder Datenfelder initialisieren Datenfelder sind dynamisch Benutzerdefinierte Datentypen Prozeduren und Funktionen Prozeduren Übergabe per Referenz Funktionen Optionale Argumente Beliebig viele Argumente Datenfelder als Argumente Rekursiver Aufruf Übungen zu Prozeduren und Funktionen Konsolenanwendung Anwendung erzeugen Ein- und Ausgabe von Text Eingabe einer Zahl Erfolgreiche Eingabe einer Zahl Ausgabe formatieren Aufruf von der Kommandozeile Objektorientierte Programmierung Was ist Objektorientierung? Klasse, Eigenschaft, Methode, Objekt Objektverweis und Instanz Eigenschaftsmethode Konstruktor Namensräume Referenzen, Vergleiche und Typen Referenzen Operator Is Objekte vergleichen Typ eines Objekts ermitteln Typ eines Objekts durch Vergleich ermitteln Delegates Statische Elemente Vererbung Konstruktoren bei Vererbung Polymorphie Schnittstellen Generische Typen Eine Liste von Zeichenketten Eine Liste von Objekten Ein Dictionary von Objekten Eigene Klassenbibliotheken DLL erstellen DLL nutzen Wichtige Klassen in.net Klasse String für Zeichenketten Eigenschaften der Klasse String Trimmen Splitten Suchen Einfügen Löschen Teilzeichenkette ermitteln Zeichen ersetzen Ausgabe formatieren

49 Inhalt Inhalt 6.2 Datum und Uhrzeit Eigenschaften von DateTime Rechnen mit Datum und Uhrzeit DateTimePicker Dateien und Verzeichnisse Lesen aus einer Textdatei Schreiben in eine Textdatei Sicheres Lesen aus einer Textdatei Sicheres Schreiben in eine Textdatei Datei mit wahlfreiem Zugriff Die Klassen File und Directory Das aktuelle Verzeichnis Eine Liste der Dateien Eine Liste der Dateien und Verzeichnisse Informationen über Dateien und Verzeichnisse Bewegen in der Verzeichnishierarchie XML-Dateien Aufbau von XML-Dateien Schreiben in eine XML-Datei Lesen aus einer XML-Datei Schreiben von Objekten Lesen von Objekten Rechnen mit der Klasse Math Weitere Elemente eines Windows- Programms Symbolleiste Erstellung der Symbolleiste Code der Symbolleiste Statusleiste Erstellung der Statusleiste Code der Statusleiste Eingabe-Dialogfeld Ausgabe-Dialogfeld Dialogfeld mit OK-Button Dialogfeld mit Info-Zeichen Dialogfeld mit Buttons für Ja und Nein Dialogfeld mit Buttons für Ja, Nein und Abbrechen Dialogfeld mit Buttons für Wiederholen und Abbrechen Dialogfeld mit Buttons für Abbrechen, Wiederholen und Ignorieren Standarddialogfelder Datei öffnen Datei speichern unter Verzeichnis auswählen Farbe auswählen Schrifteigenschaften auswählen Steuerelement ListView Steuerelement Chart Steuerelement DataGridView Lokalisierung Hauptmenü Erstellung des Hauptmenüs Code des Hauptmenüs Klasse Font Schriftart Schriftgröße Schriftstil Kontextmenü Erstellung des Kontextmenüs Code des Kontextmenüs Datenbankanwendungen mit ADO.NET Was sind relationale Datenbanken? Beispiel»Lager« Indizes Relationen Übungen

50 Inhalt Inhalt 8.2 Anlegen einer Datenbank in MS Access Aufbau von MS Access Datenbankentwurf in MS Access Übungen Datenbankzugriff mit Visual Basic Beispiel-Datenbank Ablauf eines Zugriffs Verbindung SQL-Befehl OleDb Auswahlabfrage Aktionsabfrage SQL-Befehle Auswahl mit»select« Ändern mit»update« Löschen mit»delete« Einfügen mit»insert« Typische Fehler in SQL Ein Verwaltungsprogramm Initialisierung Alle Datensätze sehen Datensatz einfügen Datensatz ändern Datensatz löschen Datensatz suchen Abfragen über mehrere Tabellen Datenbankmodell und Tabellen Alle Personen Anzahl der Kunden Alle Kunden mit allen Projekten Alle Personen mit allen Projektzeiten Alle Personen mit Zeitsumme Alle Projekte mit allen Personenzeiten Alle Projekte mit Zeitsumme JOIN oder WHERE Verbindung zu MySQL NET-Treiber Internetanwendungen mit ASP.NET Grundlagen von Internetanwendungen Statische Internetanwendungen Dynamische Internetanwendungen Vorteile von ASP.NET Ein lokaler Webserver Eine erste Internetanwendung Eine erste ASP.NET-Anwendung Fehlerhafte Programmierung Formatierung von Internetseiten Senden und Auswerten von Formulardaten Weitere Formularelemente Ein Kalenderelement ASP.NET und ADO.NET Datenbank im Internet ändern Zeichnen mit GDI Grundlagen von GDI Linie, Rechteck, Polygon und Ellipse zeichnen Grundeinstellungen Linie Rechteck Polygon Ellipse Dicke und Farbe ändern, Zeichnung löschen Text schreiben Bilder darstellen Dauerhaft zeichnen Zeichnen einer Funktion

51 Inhalt Inhalt 11 Beispielprojekte 447 Anhang Spielprogramm Tetris Spielablauf Programmbeschreibung Steuerelemente Initialisierung des Programms Erzeugen eines neuen Panels Der Zeitgeber Panel löschen Panel seitlich bewegen Panel nach unten bewegen Pause Lernprogramm Vokabeln Benutzung des Programms Erweiterung des Programms Initialisierung des Programms Ein Test beginnt Zwei Hilfsprozeduren Die Antwort prüfen Das Benutzermenü A Installation und technische Hinweise A.1 Installation von Visual Studio Community A.2 Arbeiten mit einer Projektvorlage A.3 Weitergabe eigener Windows-Programme A.4 Konfigurationsdaten B Lösungen der Übungsaufgaben B.1 Lösung der Übungsaufgabe aus Kapitel B.2 Lösungen der Übungsaufgaben aus Kapitel B.3 Lösungen der Übungsaufgaben aus Kapitel B.4 Lösungen der Übungsaufgaben aus Kapitel Index Windows Presentation Foundation Layout Steuerelemente Frame-Anwendung Zweidimensionale Grafik Dreidimensionale Grafik Animation WPF und Windows Forms

52 Index Index ^ ^= _ ? *... 50, 52 *= / /= \ &... 36, 54, 130, 301 &= # , 253 % = <... 52, 379 <=... 52, 379 <>... 52, 379 -= =... 52, 55, 379 >... 52, 379 >=... 52, 379 1:1-Relation :n-Relation , 359 3D-Körper A Abfrage, Datenbank accdb-datei Accessor Acos() Add() ArrayList Columns Controls Datum und Uhrzeit generische Liste , 452 Items Listenfeld Series SubItems AddHandler AddHours() Addition AddMilliseconds() AddressOf AddSeconds() AddXY() AddYears() ADO.NET Aktionsabfrage Aktivierungsreihenfolge AND (SQL) And (VB) Anführungszeichen Angle, LabelStyle Animation, 3D-Körper Anweisung mehrere mehrfach durchlaufen Anwendung mehrsprachig weitergeben App.config Append ArcSegment args Argument beliebig viele optional ArgumentOutOfRangeException Arkusfunktion Array, Klasse As... 42, 166 Asin() asp:calendar asp:label ASP.NET Programmierfehler Atan() Attached Event Attached Property AttributeCount Aufzählung Ausführbare Datei

53 Index Index Ausgabe formatieren mehrzeilig Ausgabe-Dialogfeld Auskommentierung Austauschformat Auswahlabfrage Axis AxisX ChartArea AxisY ChartArea B BackColor Basisklasse Methode erreichen Bedingung Befehlsschaltfläche Bericht, Datenbank Bezeichnungsfeld Beziehung , 356 erstellen Bézierkurve Bild, in Zeichnung Bildlaufleiste body Boolean Border Style Breakpoint Browser Brush Button Button (Maus) ByRef Byte ByVal C Calendar Canvas Left Top Cascading Style Sheets Case Case Else Catch Ceiling() Char... 41, 239 Chars Chart ChartAreas, Chart ChartImageFormat ChartType, Series CheckBox... 74, 419, 476 in Menü Checked... 74, 76 CheckedChanged... 74, 76 Choose() Class... 25, 186 Clear() generische Liste Graphics Series ClickOnce-Verteilung Clicks (Maus) Clone() , 219 Close() Form... 27, 141 OleDbConnection StreamReader XmlTextReader XmlTextWriter Code-Ansicht Windows Forms WPF Code-Modul , 177 Codezeile auskommentieren editieren lang Collection Color... 37, 86, Pen SolidBrush ColorDialog ColumnIndex Columns ListView Combobox CommandText Common Controls Community-Version Connection ConnectionString OleDbConnection , 427 Sammlung vor Connector/NET Console Const Container... 57, 411 Contains(), generische Liste ContainsKey() ContainsValue() ContextMenuStrip Controls Add() Remove() Convert ToDouble() ToInt32() , 319 Cos() Cosinus Count Datenfeld generische Liste Items String COUNT() Create Öffnungsmodus , 265 CreateGraphics() CSS CSV-Datei CurrentUICulture D Data Source , 405 DataBind() DataGrid DataGridView CellEventArgs ColumnCollection Row RowCollection TextBoxColumn DataSource Date Datei Änderungszeitpunkt Erzeugungszeitpunkt Information über , 276 lesen , 270 löschen öffnen öffnen, Dialog schließen , 270 schreiben speichern, Dialog wahlfreier Zugriff Zugriffszeitpunkt Daten speichern Datenbank , 459 erstellen im Internet im Internet ändern verknüpfte Abfrage Datenbankdatei Datenbanksystem Datenfeld als Parameter Dimensionsgröße durchsuchen , 149 eindimensional Größe initialisieren Klasse kopieren mehrdimensional sortieren Datenkapselung , 212 Datenkonnektivität Datenpunkt Datenreihe Datensatz ändern Anzahl auswählen einfügen gruppieren löschen sortieren Summe Datentyp benutzerdefiniert generisch

54 Index Index DateTime DateTimePicker DateTimePickerFormat Datum berechnen Bestandteil prüfen Datum und Uhrzeit eingeben Day DayOfWeek DayOfYear Debug beenden... 64, 117, 411 Debuggen, Konsolenanwendung DecimalPlaces, Zahlenauswahlfeld default.aspx Delegate DELETE , 383 DESC Description Design-Ansicht, WPF Detailtabelle Dezimaltrennzeichen Diagramm DialogResult , 326 DialogResultOK Dictionary, generisch Dictionary(Of) Dim... 42, 145 Directory Division DLL erstellen nutzen Do Doppelklick Doppelpunkt Double... 40, 367 DrawEllipse() DrawImage() DrawLine() DrawPolygon() DrawRectangle() DrawString() DropDown DropDownList DropDownStyle Dynamic Link Library E E (Konstante) Eigenschaft ändern... 19, 34 Klasse statisch Eigenschaften-Fenster... 19, 22 Eigenschaftsmethode Ein- und Ausgabe, nur Text Eingabe Zahl Zeichenkette Eingabeaufforderung Eingabe-Dialogfeld Eingabeformular Einzelschrittverfahren ElementHost ElementPosition Ellipse Else Block einzeilig Enabled Steuerelement Timer Zeitgeber End Interface End Select End Structure Enter Entwicklung eines Programms Enum Enumeration Environment Equals() , 227 Ereignis... 21, 25 mehrere Tastatur, Maus Ereigniskette endlos Ereignisliste Ereignismethode, Verweis auf Ereignisprozedur erzeugen Eulersche Zahl Event Routing Event Trigger Exception Handling Exception, Klasse ExecuteNonQuery() , 377 ExecuteReader() exe-datei... 29, 183 Exists() Directory File Exit Do Exit For Exit Function Exit Sub Exp() extensible Application Markup Language F Farbe wählen, Dialog Fehler logischer Fehlerkorrektur Feld, Datenbanktabelle Felddatentyp Feldgröße Feldname, Datenbanktabelle File , 276 FileClose() FileGetObject() FileMode FileNames FileOpen() FilePutObject() FileStream FillEllipse() FillPolygon() FillRectangle() Filter FirstDayOfWeek Fixed Single Floor() FolderBrowserDialog Font , 304, 333 Font.Style FontDialog FontFamily FontStyle.Bold FontStyle.Italic For For Each Form form (HTML) Form_Activated Form_Load Format, DateTimePicker Format() Formatvorlage Formular aktivieren anzeigen Datenbank hinzufügen mehrere verstecken Formularansicht Formularbasierte Ressourcen Formularvorlage Fortschrittsbalken Frames FromArgb()... 38, 86 FromFile() Image FullRowSelect, ListView Funktion mathematische zeichnen G Ganzzahldivision GDI Generische Liste , 226, 451 füllen leeren Generische Schnittstelle Generischer Datentyp Generisches Dictionary Get-Accessor GetCreationTime() GetCurrentDirectory() GetFiles() GetFileSystemEntries()

55 Index Index GetLastAccessTime() GetLastWriteTime() GetType() GetUpperBound() Gleich SQL VB Gleichheitszeichen... 27, 55 Grafik Graphics Grid Größer als SQL VB GROUP BY Groupbox Gültigkeitsbereich... 43, 163 H Häkchen Haltepunkt entfernen Handles Hauptmenü , 459 head Headertext Height Hide() Hilfslinien Hilfstabelle, Datenbank Hoch Hochkomma Hour HTML html HTML-Markierung Hyperlink I ICloneable id IEquatable If Block einzeilig IIf() Image auf Button für ImageList für Zeichnung ImageList Implementation Implements Imports Increment Zahlenauswahlfeld Index Datenbank , 357 Datenfeld eindeutig index.htm IndexOf() Datenfeld generische Liste String IndexOfAny(), String IndexOutOfRangeException Inherits Initial Catalog InitialDirectory Initialisierung Inkonsistenz INNER JOIN input InputBox() INSERT , 383 Insert() generische Liste ListBox Installation Installationsprogramm Instanz Instanziierung Integer Integrität, referentielle IntelliSense Interface Internetanwendung Daten senden dynamisch erstellen Internetseite formatieren Interval, Timer... 59, 316 InvalidCastException Klasse Is... 71, 152, 199 Is Nothing IsDate() IsLoaded IsNumeric() IsPostBack Items ListView J Jahr JavaScript JOIN oder WHERE K Kalender Kamera, D-Körper key KeyCode KeyDown KeyEventArgs Keys , 233 KeyUp KeyValue Kill() Klammer Klasse abgeleitet Definition einbinden ermitteln Name statisches Element Klassenbibliothek, eigene Klassenhierarchie Kleiner als SQL VB Kombinationsfeld in Menü Kommandozeile Parameter Kommentarzeile Konfigurationsdaten Konsolenanwendung Konstante integriert Konstruktor , 212 parameterlos Kontextmenü Kontrollkästchen in Menü Kontrollstruktur Koordinatensystem, 3D-Körper Kreiszahl L Label... 21, 476 LabelStyle, Axis Language LargeChange, Schieberegler LargeImageList, ListView LastIndexOf(), String Laufzeitfehler Layout Legends, Chart Length, Zeichenkette Licht, 3D-Körper LIKE (SQL) Like (VB) LineSegment Linie List(Of...) ListBox... 97, 477 ListBoxItem Liste, generisch , 226 Listenansicht mit Bild Listenfeld ListView ListViewItem localhost Localizable Location... 34, 57 Log() Log10() Logarithmus Lokal

56 Index Index Lokalisierung Long Long Integer Loop M m:n-relation Main() MainWindow.xaml MainWindow.xaml.vb Markierungssprache Mastertabelle Material 3D-Körper Math Math.Floor() Maus, Ereignis MaxDate, DateTimePicker Maximum Datenfeld Fortschrittsbalken Schieberegler Zahlenauswahlfeld MaxLength MaxSize mdb-datei Me... 27, 187 Mehrfachauswahl... 32, 70, 105 Mehrfachvererbung Mehrsprachigkeit Menü MenuStrip MeshGeometry3D Message MessageBox MessageBoxButtons MessageBoxIcon Methode Klasse statisch überladen Microsoft Access Database Engine Microsoft.ACE.OLEDB Millisecond Millisekunde MinDate, DateTimePicker Minimum Datenfeld Fortschrittsbalken Schieberegler Zahlenauswahlfeld MinSize Minute Mod modal Modul, allgemein Modularisierung... 84, 161 Module1.vb Modulo Monat Month MouseButtons MouseDown MouseEventArgs MouseUp MoveToNextAttribute() MS Access vor MultiExtended MultiLine Multiplikation MultiSelect Mustervergleich My.MySettings() MyBase... 90, 211, 214 MyBase.New() MySQL MySQL.Data MySql.Data.MySqlClient MySqlClient MySqlCommand MySqlConnection MySqlDataReader N Nachkommastellen Datentyp Zahlenauswahlfeld Name Namenskonvention... 22, 36 Namensraum einbinden namespace NavigationWindow NET-Treiber New... 35, 189 Konstruktor Next Nicht-Operator Nicht-proportionale Schriftart NodeType NOT (SQL) Not (VB) Nothing Now NumericUpDown... 65, 247 O Object object , 211 Objekt erzeugen identisch Schreibweise temporäres Objektorientierung Objektverweis dasselbe Objekt vergleichen Oder-Operator Of , 232 Öffnungsmodus OleDb OleDbCommand OleDbConnection OleDbDataReader ON OnSelectionChanged Open, Öffnungsmodus Open(), OleDbConnection OpenFileDialog Operator für Berechnungen logisch... 53, 379 Priorität Rangfolge Vergleich... 52, 199 Zuweisung option Optional Optionsschaltfläche mehrere Gruppen OR (SQL) Or (VB) Bit-Operator ORDER BY OverflowException , 119 Overloads Overridable override Overrides P Page , 480 Page_Load Page-Direktive Paint-Ereignis PaintEventArgs Panel... 57, 447 ParamArray Parameter beliebig viele optional PasswordChar Passwortabfrage Path PathFigure PathGeometry Peek() Pen Pfadangabe, relativ Pfadgeometrie PI Pinsel Farbe Pixel Platzhalter Point... 35, 437, 446 Points, Series Polygon Polymorphie Position, Legends Potenzierung Pow() PresentationCore

57 Index Index PresentationFramework Preserve Primärindex Primärschlüssel erstellen Print(), Printing Printing, Chart PrintingManager, Chart PrintPreview(), Printing Private... 44, 168, Programm beenden starten testen Programmentwicklung Programmierung clientseitig ereignisgesteuert serverseitig ProgressBar Projekt Eigenschaften neu erzeugen neu erzeugen (WPF) öffnen schließen speichern Verweis hinzufügen Projektmappen-Explorer Projektressourcen Projektvorlage Properties Window Property Protected Provider Prozedur... 26, 161 allgemein verlassen Public... 44, 140, , 212 Q Queue R RadioButton... 76, 419 Random Access Randomize() Rangfolge Read() XmlTextReader Reader ReadLine() Console StreamReader Rechenoperator Rechteck Rectangle ReDim Redundanz Referenztyp Registrierung Rekursion Relation erstellen Relational Remove() Controls Dictionary generische Liste String RemoveAt() generische Liste , 467 ListBox Replace(), String , 390 Resources.resx Ressourcen resx-datei Return , 168 Ringtausch Rnd() RootFolder Rotationstransformation Round() RowIndex Rows Rückgabewert , 168 runat Runden S SaveFileDialog SaveImage(), Chart Schalter Schieberegler Schleife For Each geschachtelt Schlüssel-Wert-Paar Schnittstelle generisch Schrift auswählen, Dialog Schriftart nicht-proportional Schriftgröße Schriftstil Schrittweite Schleife Zahlenauswahlfeld script Scrollbalken ScrollBars, Textfeld... 62, 310 Second Seiten in Frames Sekundärindex Sekunde SELECT , 378 select (HTML) Select Case SelectAll() Selected, DataGridView SelectedDate SelectedIndex ComboBox ListBox SelectedIndexChanged SelectedIndices SelectedItem SelectedItems SelectedPath SelectionMode , 107 Semikolon Separator Series, Chart SeriesChartType Serversteuerelement , 422 Set-Accessor SetCurrentDirectory() Shared Short Show(), MessageBox ShowColor ShowDialog() Standarddialogfeld Unterformular ShowNewFolderButton Simple Sin() Single... 40, 367 Sinus Size Eigenschaft Schrift Struktur Slider SmallChange, Schieberegler SmallImageList, ListView SolidBrush Solution Explorer Sort() SpecialFolder Spin-Button Split(), String SQL Großschrift typische Fehler Sqrt() Stack StackOverFlowException StackPanel Startparameter Startzustand Statische Variable Statusleiste StatusStrip Step Steuerelement Abstand einstellen aktivieren... 59, 126 ausrichten auswählen einfügen Größe Hintergrundfarbe Kontextmenü kopieren Liste markieren

58 Index Index Steuerelement (Forts.) mit Taste bedienen Position... 34, 57 sichtbar zur Laufzeit erzeugen , 447 zur Laufzeit löschen , 457 Stift Dicke Farbe Storyboard StreamReader StreamWriter String... 41, 237 feste Länge Structure Structured Query Language Struktur Definition Stunde Style , 307 Sub SubItems, ListViewItem submit Substring() Subtract() Subtraktion SUM() Symbolleiste Syntaxfehler... 27, 113 System.Data.OleDb , 426 System.Globalization System.IO System.Resources System.Text System.Threading System.Windows.Forms.Data- Visualization.Charting System.Xaml System.Xml Systemton , T Tabelle darstellen Datenbank Tabellenausgabe Tabellenentwurf TabIndex TabStop Tag der Woche Tag des Jahres Tag des Monats Tan() Tangens Tastatur, Ereignis Tastaturbedienung Taste Alt F F F Tasten-Key Tastenkombination Strg+C Strg+F Teilzeichenkette Template Formular Temporäres Objekt Tetris Text in Zeichnung mehrzeilig Steuerelement Textfeld... 62, 239 TextBox in Menü TextChanged , 247, 306 Textfeld alles auswählen ändern kopieren koppeln Then... 67, 69 TickFrequency, Schieberegler TimeOfDay Timer... 58, 316, 447 TimeSpan title (HTML) Title (VB) TitleAlignment, Axis To... 71, 87 Today TodayDayStyle ToDouble() ToInt32() , 319 Toolbox ToolStrip ToolStripComboBox ToShortDateString() ToString() , 211, 256 Trennzeichen Trim() TrimEnd() TrimStart() Truncate() Try Typ ermitteln Type Converter TypeOf Is U Übergabe per Referenz per Wert Überladen Überschreiben Überwachungsfenster Uhrzeit berechnen UID Umwandlung in ganze Zahl in Zahl Und-Operator Ungleich SQL VB Unterformular Untermenü Unterstrich... 31, 380 Until UPDATE , 377, 382 Up-Down-Button UTF V Value DateTimePicker Fortschrittsbalken Value (Forts.) HTML-Textfeld MS Excel-Zelle Schieberegler Zahlenauswahlfeld value ValueChanged DateTimePicker Schieberegler Zahlenauswahlfeld VALUES Values Variable ausblenden Gültigkeitsbereich klassenweit gültig Kontrolle Name öffentlich... 44, 139 Startwert statisch vbcrlf Verbindung, Datenbank Vererbung Vergleichsoperator Verknüpfung Datenbank erstellen (Datenbank) Verweis auf Ereignismethode auf nichts Verzeichnis Datei- und Verzeichnisliste Dateiliste ermitteln Existenz Information über setzen wählen, Dialog wechseln Verzweigung äußere innere Vieleck Vielgestaltigkeit View, ListView Visible Visual Studio Community

59 Index Vokabel-Lernprogramm Vorlage, WPF-Anwendung W Wahrheitswert Webserver lokaler WeekendDayStyle Werkzeugkasten Wertebereich Werttyp WHERE While Width... 34, 438 Window Windows Presentation Foundation 471 Windows , 183 Windows , 183 Windows , 183 WindowsBase WindowsFormsIntegration With... 94, 160 Objektinitialisierung Wochentag Wörterbuch WPF WPF in Windows Forms WPF-Buch WrapPanel Write() Console WriteAttributeString() WriteEndElement() WriteLine() , 265 Console WriteStartDocument() WriteStartElement() Wurzel X X (Location) X (Maus) x:class x:name XAML mit Programmiercode XML-Datei , 499 XML-Knoten XmlNodeType xmlns XmlTextReader XmlTextWriter Xor Bit-Operator Y Y (Location) Y (Maus) Year Z Zahl prüfen Zahlenauswahlfeld... 65, 247 Zeichen einzelnes prüfen Zeichenkette durchsuchen einfügen ersetzen Länge löschen Teilzeichenkette trimmen umwandeln verketten zerlegen Zeichenkodierung Zeichnen dauerhaft Zeichnung löschen Zeile lesen Zeilenumbruch Regeln Zeit Zeitgeber Zeitintervall Zufallsgenerator... 90, 145, 447, 459 Zuweisung Zweidimensionale Grafik

60 Wissen, wie s geht. Thomas Theis ist Diplom-Ingenieur für Technische Informatik und hat langjährige Erfahrung als IT-Dozent, unter anderem an der Fachhochschule Aachen. Er leitet Schulungen zu C/C++, Visual Basic und Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbücher. Einsteiger und Neulinge schätzen seine Fähigkeit, auch komplizierte Sachverhalte leicht verständlich zu machen und dabei auch den Spaß am Programmieren nie aus den Augen zu verlieren. Thomas Theis Einstieg in Visual Basic 2017 Ideal für Programmieranfänger 536 Seiten, broschiert, 6. Auflage, Juli ,90 Euro, ISBN Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Gerne dürfen Sie diese Leseprobe empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Die vorliegende Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag. Teilen Sie Ihre Leseerfahrung mit uns!

Leseprobe. »EinführungGrundlagenLösungen« Inhaltsverzeichnis. Index. Der Autor. Leseprobe weiterempfehlen. www.rheinwerk-verlag.

Leseprobe. »EinführungGrundlagenLösungen« Inhaltsverzeichnis. Index. Der Autor. Leseprobe weiterempfehlen. www.rheinwerk-verlag. Know-how Wissen, wie s für geht. Kreative. Leseprobe Jeder kann programmieren lernen! Thomas Theis führt Sie gekonnt in die Grundlagen von Visual Basic ein. Probieren Sie es gleich aus. Außerdem enthält

Mehr

Kapitel 1 Einführung. 1.1 Aufbau dieses Buchs

Kapitel 1 Einführung. 1.1 Aufbau dieses Buchs Kapitel 1 Einführung 1 In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang mit der Entwicklungsumgebung und den Steuerelementen. Anschließend werden Sie in der Lage sein, Ihr erstes

Mehr

<openbook> Die Visual Basic 2008 Express Edition bietet eine komfortable Entwicklungsumgebung. Sie umfasst

<openbook> Die Visual Basic 2008 Express Edition bietet eine komfortable Entwicklungsumgebung. Sie umfasst Einstieg UQuelleU: HUEinstieg in Visual Basic 2008UH von Thomas Theis HUGalileo Computing /UHU /UHU Visual BasicU 1 Einführung Visual Basic 2008 ist der Nachfolger von Visual Basic 2005 und

Mehr

Algorithmen und ihre Programmierung

Algorithmen und ihre Programmierung Veranstaltung Pr.-Nr.: 101023 Algorithmen und ihre Programmierung Veronika Waue WS 07/08 Einführung Definition: Algorithmus Ein Algorithmus ist eine genau definierte Folge von Anweisungen zur Lösung eines

Mehr

Thomas Theis. Einstieg in Visual C# 2012

Thomas Theis. Einstieg in Visual C# 2012 Thomas Theis Einstieg in Visual C# 2012 Auf einen Blick Auf einen Blick 1 Einführung... 17 2 Grundlagen... 41 3 Fehlerbehandlung... 115 4 Erweiterte Grundlagen... 127 5 Objektorientierte Programmierung...

Mehr

Makro + VBA 2007 effektiv

Makro + VBA 2007 effektiv Daten Makro + VBA 2007 effektiv 5 DATEN 5.1 Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten, siehe Seite 84, jederzeit im Programm verändert werden. Als Variablen können

Mehr

Kapitel 1 Einführung. 1.1 Aufbau dieses Buches

Kapitel 1 Einführung. 1.1 Aufbau dieses Buches Kapitel 1 Einführung 1 In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang mit der Entwicklungsumgebung und den Steuerelementen. Sie sind anschließend in der Lage, Ihr erstes eigenes

Mehr

Microsoft Access 2010 Bilder

Microsoft Access 2010 Bilder Microsoft Access 2010 Bilder Hyperlinks... arbeiten ähnlich wie ein Link in einer Webseite. sind ein Verweis auf eine Datei (access2010\material\beispiel\tabledevelop\automat.accdb). können ein Verweis

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

Formulare. Datenbankanwendung 113

Formulare. Datenbankanwendung 113 Formulare Wenn Sie mit sehr umfangreichen Tabellen arbeiten, werden Sie an der Datenblattansicht von Access nicht lange Ihre Freude haben, sind dort doch immer zu wenig Felder gleichzeitig sichtbar. Um

Mehr

Neben dem Symbol Entwurfsmodus ist das Symbol Befehlschaltfläche zu sehen.

Neben dem Symbol Entwurfsmodus ist das Symbol Befehlschaltfläche zu sehen. Visual Basic / EXCEL Unterrichtsreihe von Herrn Selbach / Makro Programmierung 1. Die Steuerelemente Toolbox Durch Ansicht Symbolleisten Steuerelemente-Toolbox kann man Befehlschaltflächen (CommandButton),

Mehr

Visual Basic Express Fehlerermittlung

Visual Basic Express Fehlerermittlung Inhalt Dokument Beschreibung... 1 Fehlermeldungen anzeigen... 1 Fehlerkorrektur mit Fehlerliste... 2 Laufzeitfehler... 3 Arbeiten mit Haltepunkten... 4 Dokument Beschreibung Bei der Programmierung können

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Microsoft 2010 Express/Beispiel für Grafische Oberflächen

Microsoft 2010 Express/Beispiel für Grafische Oberflächen I Vorbereitung wie Konsolanwendung Rechner hochfahren - Visual C++ 2010 Express aufrufen Datei/neu/Projekt im Menue wählen II Projekt und Projektmappe anlegen Vorlage CLR markieren Projekttyp Windows Forms-Anwendung

Mehr

InDesign CS6. Grundlagen. Peter Wies, Linda York. 1. Ausgabe, 2. Aktualisierung, November 2013 INDCS6

InDesign CS6. Grundlagen. Peter Wies, Linda York. 1. Ausgabe, 2. Aktualisierung, November 2013 INDCS6 InDesign CS6 Peter Wies, Linda York. Ausgabe, 2. Aktualisierung, November 203 Grundlagen INDCS6 2 InDesign CS6 - Grundlagen 2 Einstieg in InDesign In diesem Kapitel erfahren Sie wie Sie InDesign starten

Mehr

DAS EINSTEIGERSEMINAR

DAS EINSTEIGERSEMINAR DAS EINSTEIGERSEMINAR Microsoft Office Excel 2010 Gudrun Rehn-Göstenmeier LERNEN ÜBEN ANWENDEN Teil I: Lernen L1 Dateiorganisation Bevor wir uns mit den Excel-spezifischen Befehlen und Funktionen befassen

Mehr

Einführung in die Programmierung mit VBA

Einführung in die Programmierung mit VBA Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen

Mehr

Auf einen Blick. 1 Einführung... 17. 2 Grundlagen... 39. 3 Fehlerbehandlung... 107. 4 Erweiterte Grundlagen... 119

Auf einen Blick. 1 Einführung... 17. 2 Grundlagen... 39. 3 Fehlerbehandlung... 107. 4 Erweiterte Grundlagen... 119 Auf einen Blick Auf einen Blick 1 Einführung... 17 2 Grundlagen... 39 3 Fehlerbehandlung... 107 4 Erweiterte Grundlagen... 119 5 Objektorientierte Programmierung... 185 6 Wichtige Klassen in.net... 223

Mehr

Ausbildungsziel: Erstellung eines Briefes mit Hilfe von Vorlagen

Ausbildungsziel: Erstellung eines Briefes mit Hilfe von Vorlagen Ausbildungsziel: Erstellung eines Briefes mit Hilfe von Vorlagen 1. Grundlagen (Inhalt Menü) Einer der grundlegendsten Anwendungen des Computers ist die als Schreibmaschine! Im Gegensatz zur Schreibmaschine

Mehr

Überschrift/Caption. Eigenschaftenfenster

Überschrift/Caption. Eigenschaftenfenster UsserrForrm errssttel llen Dass Codeffensstterr 22000044 NNi iikkoo BBeecckkeerr Öffnen Sie EXCEL und wechseln Sie mit der Tastenkombination Alt + F11 in den Visual Basic-Editor. Alternativ können Sie

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Auf einer Seite werden maximal 10 Einträge angezeigt. Sind viele Einträge vorhanden, werden diese auf mehrere Seiten aufgeteilt.

Auf einer Seite werden maximal 10 Einträge angezeigt. Sind viele Einträge vorhanden, werden diese auf mehrere Seiten aufgeteilt. Die Seitenverwaltung Mit einem Klick auf den Link Seitenverwaltung in der Navigationsleiste auf der linken Seite gelangen Sie zur Übersicht der Einträge in der Seitenverwaltung. Übersicht Auf einer Seite

Mehr

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt Serienbriefe Wie Sie einen Serienbrief mittels Calc und Writer erstellen zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt Inhaltsverzeichnis 1. Erzeugen einer Quelldatei 2. Erzeugung

Mehr

Michael Kolberg. einfach klipp & klar. Microsofft* Press

Michael Kolberg. einfach klipp & klar. Microsofft* Press Michael Kolberg einfach klipp & klar Microsofft* Press III Vorwort 11 Die CD-ROM zum Buch 21 Die AutoPlay-Funktion der CD-ROM 22 Installation der Testfragen und des Ebooks 23 Installation des Computer-Lexikons

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

Kurzanleitung. Zitiertil-Creator. Dokumentvorlagen Dokumente Formatvorlagen Format Zeichen Format Absatz

Kurzanleitung. Zitiertil-Creator. Dokumentvorlagen Dokumente Formatvorlagen Format Zeichen Format Absatz Dokumentvorlagen Dokumente Formatvorlagen Format Zeichen Format Absatz Datei Neu... Datei öffnen Datei schließen Beenden Suchen Suchen & Ersetzen Verknüpfungen Optionen Einfügen Inhalte einfügen Format

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08 Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für

Mehr

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

1 Aufgaben 1.1 Objektorientiert: (extended-hamster) Sammel-Hamster 1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:

Mehr

Die Gruppe Funktionsbibliothek

Die Gruppe Funktionsbibliothek Die Gruppe Funktionsbibliothek Neben der Schaltfläche Funktion einfügen sind auf der Registerkarte Formeln in der Gruppe Funktionsbibliothek weitere Funktions-Kategorien platziert. Mit einem Klick auf

Mehr

3.1 Textformate. Sie verändern die Schriftart. Sie verändern die Schriftgröße. Den Text formatieren

3.1 Textformate. Sie verändern die Schriftart. Sie verändern die Schriftgröße. Den Text formatieren MS Word 2013 Kompakt 3 Nachdem die Datei geöffnet ist, steht sie zur weiteren Bearbeitung bereit. Wir können nun das Dokument nach eigenen Wünschen verändern und optisch gestalten (formatieren). In dieser

Mehr

Einführung in Automation Studio

Einführung in Automation Studio Einführung in Automation Studio Übungsziel: Der links abgebildete Stromlaufplan soll mit einer SPS realisiert werden und mit Automation Studio programmiert werden. Es soll ein Softwareobjekt Logik_1 in

Mehr

Microsoft Access Abfragen: Informationen anzeigen und sortieren

Microsoft Access Abfragen: Informationen anzeigen und sortieren Microsoft Access Abfragen: Informationen anzeigen und sortieren Alle Kunden Die Namen der Mitarbeiter und deren E-Mail-Adresse Bestellungen, nach dem Datum sortiert Anja Aue 16.11.16 Abfragen Zusammenstellung

Mehr

Vorübung 1 Beschriften Sie die Tabelle wie in der Abbildung dargestellt.

Vorübung 1 Beschriften Sie die Tabelle wie in der Abbildung dargestellt. Diese Anleitung führt in einige Grundfunktionen des Tabellenkalkulationsprogramms Microsoft Excel ein. Sie erstellen nach einigen Vorübungen mit Excel ein kleines Programm, das auf der Grundlage der Gesamtpunktzahl

Mehr

Informatik BMS. Excel. Trainingsunterlagen EXCEL XP BASIC

Informatik BMS. Excel. Trainingsunterlagen EXCEL XP BASIC Trainingsunterlagen EXCEL XP BASIC Karin Seibel Seite 1 21.01.2008 Was ist eine Tabellenkalkulation? Inhalt Was ist eine Tabellenkalkulation?... 3 Aufbau einer Datei... 3 starten... 4 Das -Anwendungsfenster...

Mehr

Word starten. Word Word 2010 starten. Schritt 1

Word starten. Word Word 2010 starten. Schritt 1 Schritt 1 Word 2010 starten. 2) Klicke danach auf Microsoft Office Word 2010. Sollte Word nicht in dieser Ansicht aufscheinen, dann gehe zu Punkt 3 weiter. 1) Führe den Mauszeiger auf die Schaltfläche

Mehr

WORD-EINFÜHRUNG. Inhaltsverzeichnis

WORD-EINFÜHRUNG. Inhaltsverzeichnis WORD-EINFÜHRUNG INHALT Inhaltsverzeichnis 1 Erste Schritte in Word...1 1.1 Word starten... 1 1.2 Der Word-Bildschirm... 2 2 Erste Arbeiten am Text...6 2.1 Text erfassen und speichern... 6 2.1.1 Übung...

Mehr

Visual Basic Editor CATIA V5

Visual Basic Editor CATIA V5 Visual Basic Editor CATIA V5 Daniel Frauenrath Allgemein Der Visual Basic Editor ist fester Bestandteil von CATIA V5. Im Gegensatz zum internen Editor für CATScript und CATVbs hat der Visual Basic Editor

Mehr

3 Mit Programmen und Fenstern

3 Mit Programmen und Fenstern 34 MIT PROGRAMMEN UND FENSTERN ARBEITEN 3 Mit Programmen und Fenstern arbeiten In dieser Lektion lernen Sie wie Sie Programme starten und wieder beenden wie Sie mit Fenstern arbeiten Ein Programm starten

Mehr

5 Tabellenanpassung. 5.1 Spaltenbreite und Zeilenhöhe Spaltenbreite verändern

5 Tabellenanpassung. 5.1 Spaltenbreite und Zeilenhöhe Spaltenbreite verändern Um Tabellen effizient bearbeiten können, ist es notwendig, dass Sie die Struktur der Tabelle Ihren Bedürfnissen anpassen. Sie können mit Excel die Elemente einer Tabelle also Zellen, Zeilen und Spalten

Mehr

In diesem Beitrag sollen die einzelnen Möglichkeiten detaillierter erläutert und bei Notwendigkeit mit einem Beispiel hinterlegt werden.

In diesem Beitrag sollen die einzelnen Möglichkeiten detaillierter erläutert und bei Notwendigkeit mit einem Beispiel hinterlegt werden. Inhalte einfügen Das Menü Inhalte einfügen bietet eine Vielzahl von Möglichkeiten kopierte Elemente wieder in ein Tabellenblatt einzufügen. Dabei kann im Gegensatz zum normalen Einfügen darauf geachtet

Mehr

Druckanpassung von Mahnungen

Druckanpassung von Mahnungen Druckanpassung von Mahnungen Nur wenn Sie die faktura in der Einzelversion nutzen, steht Ihnen für die Druckanpassung der Mahnungen auch der Formularassistent zur Verfügung. Dort können Sie die gewünschten

Mehr

Visual Basic - Einführung Mathematische Funktionen und Operatoren Zeichenfolgenbearbeitung. 1.7 Schleifen, Arrays und Entscheidungen

Visual Basic - Einführung Mathematische Funktionen und Operatoren Zeichenfolgenbearbeitung. 1.7 Schleifen, Arrays und Entscheidungen Inhalt 1 Einführung 1.1 Begriffe und Notationen 1.2 Variablen und Datentypen 1.3 Funktionen und Prozeduren 1.4 Arithmetische Operationen 1.4.1 Mathematische Funktionen und Operatoren 1.5 Konstanten 1.6

Mehr

1 MAKROS AUFZEICHNEN. 1.1 Einführung

1 MAKROS AUFZEICHNEN. 1.1 Einführung Makro Aufzeichnen Makro + VBA 2010 effektiv 1 MAKROS AUFZEICHNEN 1.1 Einführung Sie können Excel sehr einfach automatisieren, indem Sie ein Makro aufzeichnen. Ähnlich wie bei einem Kassettenrecorder werden

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

Mehr

7 DOKUMENTEE FORMATIEREN

7 DOKUMENTEE FORMATIEREN 7 DOKUMENTEE FORMATIEREN Sie können grundlegende Einstellungen von Dokumenten wie die Seitenausrichtung oder die Papiergröße bearbeiten und so Ihren Bedürfnissen anpassen. Die Befehle dazu finden Sie unter

Mehr

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme Institut für Computational Science Prof. Dr. H. Hinterberger Praxismodul 1 Einführung in die Programmierung Erste Programme Einführung in die Programmierung 2 Institut für Computational Science, ETH Zürich,

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Handbuch ECDL 2003 Modul 5: Datenbank Formulare anpassen

Handbuch ECDL 2003 Modul 5: Datenbank Formulare anpassen Handbuch ECDL 2003 Modul 5: Datenbank Formulare anpassen Dateiname: ecdl5_04_02_documentation Speicherdatum: 24.11.2004 ECDL 2003 Modul 5 Datenbank - Formulare anpassen Inhaltsverzeichnis 1 EINLEITUNG...

Mehr

Liebe Leserin, lieber Leser,

Liebe Leserin, lieber Leser, Liebe Leserin, lieber Leser, Sie möchten Visual C# lernen? Eine gute Wahl, denn aufgrund ihrer großen Vielseitigkeit und Leistungsfähigkeit ist C# eine der wichtigsten Programmiersprachen unserer Zeit.

Mehr

Kurzanleitung für den MyDrive Client

Kurzanleitung für den MyDrive Client Kurzanleitung für den MyDrive Client Hinweis: Prüfen Sie bei Problemen zuerst, ob eine neuere Version vorhanden ist und installieren Sie diese. Version 1.3 für MAC und Linux (29.06.2017) - Hochladen mit

Mehr

Installation und Benutzung. LangCorr ApS Erritsoegaardsvej 11 DK 7000 Fredericia Denmark

Installation und Benutzung. LangCorr ApS Erritsoegaardsvej 11 DK 7000 Fredericia Denmark Installation und Benutzung Herzlich Willkommen zu Language Corrector! Language Corrector herunterladen: Auf unserer Seite www.langcorr.com finden Sie unten, Mitte links, den Link zu LanguageCorrector.

Mehr

Rezepte in der Klammer-Strich-Methode schreiben

Rezepte in der Klammer-Strich-Methode schreiben Rezepte in der Klammer-Strich-Methode schreiben LibreOffice 4.0.4 In diesem Text wird Schritt für Schritt erklärt, wie ein Rezept in der Klammer-Strich-Methode mit dem Programm LibreOffice Version 4.0.4

Mehr

Anleitung zum Download der EBMG_Datei_9_2.xls

Anleitung zum Download der EBMG_Datei_9_2.xls Anleitung zum Download der EBMG_Datei_9_2.xls Die folgende Beschreibung ist für die jeweils aktuelle Download-Version, unabhängig von Dateiname oder Versionsnummer, gültig. Die aktuelle Bezeichnung lautet

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

Bedienungsanleitung MT 4007 MedioControl

Bedienungsanleitung MT 4007 MedioControl R Bedienungsanleitung MT 4007 MedioControl Inhaltsverzeichnis Inhaltsverzeichnis... 2 Einleitung... 3 Vorraussetzungen... 3 Installation... 3 Speicher verwalten und anzeigen... 4 Speicher und Timer zum

Mehr

Excel 2010. Grundlagen. Sabine Spieß, Peter Wies. 1. Ausgabe, 7. Aktualisierung, Juli 2013. Trainermedienpaket EX2010_TMP

Excel 2010. Grundlagen. Sabine Spieß, Peter Wies. 1. Ausgabe, 7. Aktualisierung, Juli 2013. Trainermedienpaket EX2010_TMP Sabine Spieß, Peter Wies Excel 2010 Grundlagen 1. Ausgabe, 7. Aktualisierung, Juli 2013 Trainermedienpaket EX2010_TMP 12 Excel 2010 - Grundlagen 12 Spezielle Gestaltungsmöglichkeiten nutzen Trainerhinweise

Mehr

Serienbrief erstellen

Serienbrief erstellen Um in Word 2010 einen Serienbrief zu erstellen, muss man den Seriendruck-Assistenten aufrufen. Der Seriendruck-Assistent führt dich in sechs Schritten durch diese Thematik. Dabei enthält jeder Schritt

Mehr

Kopf-/Fußzeilen und Seitenzahlen

Kopf-/Fußzeilen und Seitenzahlen Dokumentvorlagen Dokumente Formatvorlagen Format Zeichen Format Absatz Datei Neu... Datei öffnen Datei schließen Beenden Suchen Suchen & Ersetzen Verknüpfungen Optionen Einfügen Inhalte einfügen Format

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen

Mehr

Word Grundkurs. Sommerkurs 2003

Word Grundkurs. Sommerkurs 2003 Word Grundkurs Sommerkurs 2003 Word Informatikkurs Sommer 2003 Seite 2 Inhalt: 1. Was ist Word? 3 2. Word starten und beenden 4 3. Begriffe: 4 3.1 Symbolleiste: 5 3.2 Menuleiste: 8 4. Dokument speichern:

Mehr

Microsoft Visual Studio Community 2015

Microsoft Visual Studio Community 2015 Microsoft Visual Studio Community 2015 Visual Studio Community 2015 ist eine kostenlose IDE mit leistungsfähigen Programmier- und Entwicklungswerkzeugen für Windows, ios und Android. Sie ist für einzelne

Mehr

Der Windows Explorer INITE 7e 2003 Joël François

Der Windows Explorer INITE 7e 2003 Joël François Der Windows Explorer 1 Einleitung Was ist der Explorer? Der Windows Explorer (nicht zu verwechseln mit dem Internet Explorer) ist ein Programm welches zur Datei Verwaltung unter Microsoft Windows verwendet

Mehr

Einführung in Visual Basic 6.0

Einführung in Visual Basic 6.0 Einführung in Visual Basic 6.0 Grundlagen Die Windows-Philosophie Die Art und Weise, wie die Kommunikation mit dem Benutzer abläuft, dürfte wohl der gravierendste Unterschied zwischen den klassischen Betriebssystemen

Mehr

Netzlaufwerk-Verbindung auf den Server se-1ug w2k.makro.privat. im Computerraum für die Daten der Chemikaliendatenbank

Netzlaufwerk-Verbindung auf den Server se-1ug w2k.makro.privat. im Computerraum für die Daten der Chemikaliendatenbank Netzlaufwerk-Verbindung auf den Server se-1ug-01008-05.w2k.makro.privat im Computerraum für die Daten der Chemikaliendatenbank Verwendung nur für geschäftliche Belange, ablegen oder Missbrauch durch private

Mehr

Handbuch zum VivaWeb-Serienbrief-Programm

Handbuch zum VivaWeb-Serienbrief-Programm Handbuch zum VivaWeb-Serienbrief-Programm In 10 Schritten zum Serienbrief Das folgende Handbuch erläutert Ihnen die Nutzungsmöglichkeiten des ARV Serienbrief-Programms in all seinen Einzelheiten. Dieses

Mehr

Novell. GroupWise 2014 effizient einsetzen. Peter Wies. 1. Ausgabe, Juni 2014

Novell. GroupWise 2014 effizient einsetzen. Peter Wies. 1. Ausgabe, Juni 2014 Peter Wies 1. Ausgabe, Juni 2014 Novell GroupWise 2014 effizient einsetzen GW2014 1 Novell GroupWise 2014 effizient einsetzen Menüleiste Navigationsleiste Symbolleisten Kopfleiste Favoritenliste Fensterbereich

Mehr

Kennen, können, beherrschen lernen was gebraucht wird www.doelle-web.de

Kennen, können, beherrschen lernen was gebraucht wird www.doelle-web.de Inhaltsverzeichnis Inhaltsverzeichnis... 1 Die grundlegende Zellformatierung... 2 Grundlagen... 2 Formatierungsmöglichkeiten... 2 Designs verwenden... 2 Grundsätzliche Vorgehensweise beim Formatieren von

Mehr

Thema: Excel-Grundlagen

Thema: Excel-Grundlagen Editieren von Zelleninhalten Die Eingabezeile Unmittelbar oberhalb des Tabellen-Arbeitsbereichs befindet sich eine Zeile, die im linken Feld die Adresse der momentan selektierten Zelle anzeigt und rechts

Mehr

Desktop Schultz Informatik 1

Desktop Schultz Informatik 1 Desktop Schultz Informatik 1 Welche Laufwerke sind eingerichtet? Systemübersicht Führen Sie einen Doppelklick auf das Desktopsymbol Arbeitsplatz aus und Sie erhalten diese Übersicht. Sie sehen sofort,

Mehr

Die Website der Pressglas-Korrespondenz und Adobe Reader, Version 9.1

Die Website der Pressglas-Korrespondenz und Adobe Reader, Version 9.1 SG März 2009 Die Website der Pressglas-Korrespondenz und Adobe Reader, Version 9.1 Auf www.pressglas-korrespondenz.de - der Website der Pressglas-Korrespondenz - werden alle Artikel im Format PDF (Portable

Mehr

KOPF- UND FUßZEILEN KOPF- UND FUßZEILEN HINZUFÜGEN

KOPF- UND FUßZEILEN KOPF- UND FUßZEILEN HINZUFÜGEN WORD 2007/2010/2013 Seite 1 von 5 KOPF- UND FUßZEILEN Kopf- und Fußzeilen enthalten Informationen, die sich am Seitenanfang oder Seitenende eines Dokuments wiederholen. Wenn Sie Kopf- und Fußzeilen erstellen

Mehr

Wichtige Standardaktionen durchführen

Wichtige Standardaktionen durchführen Anhang A Wichtige Standardaktionen durchführen Die Themen dieses Anhangs So geht es mit Access 2013 So geht es mit Access 2010 So geht es mit Access 2007 So geht es mit Access 2003 In diesem Anhang wird

Mehr

Word 2010 Formulare erstellen mit Inhaltssteuerelementen

Word 2010 Formulare erstellen mit Inhaltssteuerelementen WO.020, Version 1.0 23.09.2013 Kurzanleitung Word 2010 Formulare erstellen mit en Bei der Erstellung von Word-Formularen werden in den meisten Fällen sogenannte Formularfelder eingesetzt, also Platzhalter

Mehr

1 Einführung... 13. 2 Erste Schritte... 19. 3 Programmierkurs... 33. 4 Datentypen... 81. 5 Weiterführende Programmierung... 139

1 Einführung... 13. 2 Erste Schritte... 19. 3 Programmierkurs... 33. 4 Datentypen... 81. 5 Weiterführende Programmierung... 139 Auf einen Blick 1 Einführung... 13 2 Erste Schritte... 19 3 Programmierkurs... 33 4 Datentypen... 81 5 Weiterführende Programmierung... 139 6 Objektorientierte Programmierung... 191 7 Verschiedene Module...

Mehr

Excel 2013. Grundlagen. Sabine Spieß, Peter Wies. 1. Ausgabe, September 2013. Trainermedienpaket EX2013_TMP

Excel 2013. Grundlagen. Sabine Spieß, Peter Wies. 1. Ausgabe, September 2013. Trainermedienpaket EX2013_TMP Excel 2013 Sabine Spieß, Peter Wies Grundlagen 1. Ausgabe, September 2013 Trainermedienpaket EX2013_TMP 12 Excel 2013 - Grundlagen 12 Spezielle Gestaltungsmöglichkeiten nutzen Trainerhinweise Unterrichtsdauer

Mehr

Kapitel 1 Einführung. 1.1 Aufbau dieses Buches

Kapitel 1 Einführung. 1.1 Aufbau dieses Buches Kapitel 1 Einführung 1 In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang mit der Entwicklungsumgebung und den Steuerelementen. Anschließend werden Sie in der Lage sein, Ihr erstes

Mehr

3.4.1 Anlegen zusätzlicher Worte

3.4.1 Anlegen zusätzlicher Worte 3.4.1 Anlegen zusätzlicher Worte Nach Auswahl des Menüpunktes Wortdatenbank Worte bearbeiten... öffnet sich das in der Abbildung links dargestellte Fenster Wortdatenbank. Es enthält drei Karteikartenreiter

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 1 SS 2016

Mehr

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue Java - Zahlen, Wahrheitswerte und Zeichen Leibniz Universität Anja Aue Kommentare Hilfe für den Entwickler. Wer hat wann welche Änderung vorgenommen? Warum werden diese Anweisungen hier ausgeführt? Bei

Mehr

Das Anpassen der Stammdatenansichten

Das Anpassen der Stammdatenansichten Das Softwarehaus für Schulen Das Anpassen der Stammdatenansichten (Stand: 07/2010) PEDAV : Das Softwarehaus für Schulen ort : 45359 Essen-Schönebeck str : Schönebecker Straße 1 tel : (0201) 61 64 810 http

Mehr

Software. Die Erste. C o m p u t e r G r u n d w i s s e n Te i l I I. S o f t w a r e. H a r d w a r e. C D / D V D B r e n n e n.

Software. Die Erste. C o m p u t e r G r u n d w i s s e n Te i l I I. S o f t w a r e. H a r d w a r e. C D / D V D B r e n n e n. C o m p u t e r G r u n d w i s s e n Te i l I I H a r d w a r e C D / D V D B r e n n e n S o f t w a r e I n t e r n e t Software Die Erste S y s t e m p f l e g e Te x t v e r a r b e i t u n g V i

Mehr

Technische Dokumentation Abstimmungs-/ Anwesenheitsliste

Technische Dokumentation Abstimmungs-/ Anwesenheitsliste Weisestrasse 28 12049 Berlin Oliver Scheckelhoff Softwareprojektierung Tel.: +49 (30) 715 76 611 Fax.: +49 (30) 627 04 132 E-Mail: info@excelbeispiele.de Homepage: http://www.excelbeispiele.de http://www.excelbeispiele.com

Mehr

Access 2010. für Windows. Andrea Weikert 1. Ausgabe, 4. Aktualisierung, Juni 2012. Grundlagen für Anwender

Access 2010. für Windows. Andrea Weikert 1. Ausgabe, 4. Aktualisierung, Juni 2012. Grundlagen für Anwender Andrea Weikert 1. Ausgabe, 4. Aktualisierung, Juni 2012 Access 2010 für Windows Grundlagen für Anwender ACC2010 2 Access 2010 - Grundlagen für Anwender 2 Mit Datenbanken arbeiten In diesem Kapitel erfahren

Mehr

Startseite. Primadenta Joomla. Unterseite

Startseite. Primadenta Joomla. Unterseite Startseite Primadenta Joomla Unterseite Inhaltsverzeichniss Punkt 1: Inhalt der Seite bearbeiten Punkt 2: Wußten Sie schon einen neuen Beitrag anfügen Punkt 3: Neuen Punkt in der Navigation anlegen Punkt

Mehr

Microsoft PowerPoint 2013 Layouts

Microsoft PowerPoint 2013 Layouts Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft PowerPoint 2013 Layouts Layouts in PowerPoint 2013 Seite 1 von 8 Inhaltsverzeichnis Einleitung... 2 Layout auswählen... 2 Arbeiten mit

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Access 2010. für Windows. Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011. Automatisierung, Programmierung ACC2010P

Access 2010. für Windows. Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011. Automatisierung, Programmierung ACC2010P Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011 Access 2010 für Windows Automatisierung, Programmierung ACC2010P 4 Access 2010 für Windows - Automatisierung, Programmierung 4 Mit

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

ECDL Information und Kommunikation Kapitel 7

ECDL Information und Kommunikation Kapitel 7 Kapitel 7 Bearbeiten von E-Mails Outlook Express bietet Ihnen noch weitere Möglichkeiten, als nur das Empfangen und Versenden von Mails. Sie können empfangene Mails direkt beantworten oder an andere Personen

Mehr

Zahlenraten: Ein Spiel in Java.

Zahlenraten: Ein Spiel in Java. Zahlenraten: Ein Spiel in Java. Nach dem Start vom Java-Editor (und dem Erstellen eines JFrame-Programms) sieht man Folgendes: Dieser Code startet das Programm, indem es ein Objekt der Klasse Zahlenraten

Mehr

Visual Basic Ricardo Hernández García 1. Ausgabe, März Grundlagen der Programmierung

Visual Basic Ricardo Hernández García 1. Ausgabe, März Grundlagen der Programmierung Visual Basic 2012 Ricardo Hernández García 1. Ausgabe, März 2013 Grundlagen der Programmierung VBNET2012 Die Entwicklungsumgebung Visual Studio 2012 3 3.4 Fenster in Visual Studio 2012 bedienen Mit Fenstern

Mehr

Werden Sie fit für jedes Programm!

Werden Sie fit für jedes Programm! Werden Sie fit für jedes Programm! Es gibt zwei verschiedene Basisdesigns von Programmfenstern. Anhand von WordPad erfahren Sie Gemeinsamkeiten und Unterschiede, sodass Sie sich anschließend in jedem Programm

Mehr

Der Serienbrief bzw. Seriendruck

Der Serienbrief bzw. Seriendruck Der Serienbrief bzw. Seriendruck Sie lernen einen Serienbrief zu erstellen. In Word 2010 wird der Serienbrief unter der allgemeinen Bezeichnung Seriendruck geführt. Er besteht aus einem Hauptdokument (dem

Mehr

PC-Schriften mit AMP Font Viewer ansehen:

PC-Schriften mit AMP Font Viewer ansehen: PC-Schriften mit AMP Font Viewer ansehen: Nicht immer reicht die Schriftenvorschau von Word oder einem anderen Schreibprogramm aus, um sich wirklich ein Bild von der Schrift, die man z. B. für eine Einladungskarte

Mehr

Karten von data2map selbst ergänzen und an eigene Erfordernisse anpassen.

Karten von data2map selbst ergänzen und an eigene Erfordernisse anpassen. Karten von selbst ergänzen und an eigene Erfordernisse anpassen. So einfach geht s! Anleitung in vier Schritten: 1. Öffnen der Karte in Adobe Acrobat Reader. 2. Exportieren der Karte aus Adobe Acrobat

Mehr

Beschreibung für Import der Protokolldaten nach Microsoft Excel

Beschreibung für Import der Protokolldaten nach Microsoft Excel Beschreibung für Import der Protokolldaten nach Microsoft Excel Revision 1.0 1. Allgemeines Für die DerbyControl Messanlage gibt es Protokollierungsfunktion der Messdaten. Diese Messdaten werden im Programmverzeichnis

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Grundstrukturen: Sub [name]([übergabe]) End Sub [Übergabe] ist

Mehr