Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einführung in die Programmierung mit VB.NET Einführung in die Programmierung mit Visual Basic.NET Dipl.-Kfm. Lars Burmester WS 2006/2007.

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung in die Programmierung mit VB.NET Einführung in die Programmierung mit Visual Basic.NET Dipl.-Kfm. Lars Burmester WS 2006/2007."—  Präsentation transkript:

1 Einführung in die Programmierung mit VB.NET Einführung in die Programmierung mit Visual Basic.NET Dipl.-Kfm. Lars Burmester WS 2006/2007

2 Einführung in die Programmierung mit VB.NET Literatur Kofler, Michael: Visual Basic.NET, Addison-Wesley, München, Boston u.a. 2002 (~50 €) Monadjemi, Peter: Jetzt lerne ich Visual Basic.NET, Markt & Technik, München 2004 (25 €) Martin, René: Einstieg in VB.NET, Galileo Computing, 2002 (20 €) Craig, John Clark; Webb, Jeff: Visual Basic 5.0 - Entwickler-Workshop, Microsoft Press, Redmond, Washington 1997 (85 DM) 1

3 Einführung in die Programmierung mit VB.NET Programmiersprachen Erzeugung von Code, den der Computer ausführen kann 2 wesentliche Unterscheidungsmerkmale für Programmiersprachen: –Art der Symbolik (Syntax) –Art der Code-Erzeugung (Compiler vs. Interpreter) 2

4 Einführung in die Programmierung mit VB.NET Art der Symbolik - Grad der Abstraktion vom Maschinencode - Maschinennahe Sprachen rechnerspezifisch kompakt und schnell z. B. Assembler Höhere Programmiersprachen rechnerunabhängig umfangreichere Befehle leichter erlernbar langsamer und größer z.B. Cobol 3

5 Einführung in die Programmierung mit VB.NET Art der Code-Erzeugung Mischformen kombinierter Einsatz von Compiler und Interpreter z.B. Java Interpreter-Sprachen Programm wird Zeile für Zeile abgearbeitet, d.h. Anweisungen werden geprüft und unmittelbar ausgeführt kein Objektprogramm Entwicklungsumgebung bzw. Engine zum Ausführen des Programms notwendig langsamer z.B. BASIC, Small-Talk, PHP, ASP, Javascript 4 Compiler-Sprachen das in der Programmier- sprache verfasste Programm (Quellprogramm) wird komplett in Maschinen- sprache übersetzt und kann als solches gespeichert (Objektprogramm) und anschließend ausgeführt werden EXE- bzw. BAT-Datei z.B. Pascal

6 Einführung in die Programmierung mit VB.NET Programmausführungsmodell von.NET

7 Einführung in die Programmierung mit VB.NET 6 Historie der Programmiersprachen

8 Einführung in die Programmierung mit VB.NET Daten Funktion Prozedurales Programmieren Daten Methode Daten Methode Daten Methode Daten Methode Objektorientiertes Programmieren 7 Prozedurales vs. objektorientiertes Programmieren

9 Einführung in die Programmierung mit VB.NET Entwicklungsumgebung "VisualStudio.NET" Hauptfenster Projektmappen- Explorer Toolbox Formularfenster Eigenschaftsfenster Codefenster 8

10 Einführung in die Programmierung mit VB.NET Beispielprogramm „Hello World!“ Neues Projekt Steuerelemente einfügen Eigenschaften festlegen Programmcode erstellen Programm speichern 9

11 Einführung in die Programmierung mit VB.NET Variablen... sind Platzhalter für Zahlen, Text oder andere Daten. Variablen werden dazu verwendet, Daten während des Programmablaufs vorübergehend zu speichern und Berechnungen mit ihnen auszuführen. Deklaration: – Option Explicit On Variablen müssen vor ihrer ersten Verwendung mit Dim deklariert werden, z.B. Dim intZahl1 – Option Strict On Variablen müssen mit expliziter Typangabe deklariert werden, z.B. Dim intZahl1 As Integer –Initialisierung (erste Wertzuweisung) bei Deklaration möglich, z.B. Dim intZahl1 As Integer = 1 Konstanten: –werden mit Const definiert, z.B. Const Pi As Double = 3.14159265 Vgl. Kofler, VB.NET, S. 116ff. 10

12 Einführung in die Programmierung mit VB.NET 11 Datentypen in VB.NET DatentypSuffixByteWertebereich Boolean 2True oder False Byte 1ganze Zahlen: 0... 255 Short 2ganze Zahlen: -32.768... +32.767 Integer%4ganze Zahlen: -2.147.483.648 und 2.147.483.647 Long&8ganze Zahlen: -2 63... 2 63 -1 Single !4Fließkommazahlen mit einfacher Genauigkeit Double#8Fließkommazahlen mit doppelter Genauigkeit Decimal@16Festkommazahlen mit 28 Stellen Genauigkeit Char2ein Unicode-Zeichen String$10+2*nZeichenketten Date8Datumsangaben Object4+nDefaultdatentyp, selbst anpassend Beispiele für Suffix-Verwendung: Dim i% statt Dim i As IntegerDim Name$ statt Dim Name As String Vgl. Kofler, VB.NET, S. 116ff.

13 Einführung in die Programmierung mit VB.NET Konvertierungsfunktionen 12 Daten bzw. Variablen müssen häufig in verschiedene Datentypen umgewandelt werden. Beispiel: Berechnungen kann man nur mit numerischen Datentypen durchführen. Um mit einer Zeichenkette (z.B. Benutzerein- gabe in einem Textfeld) rechnen zu können, muss diese zu- nächst in einen numerischen Datentyp (z.B. Integer, Double) umgewandelt werden. Für explizite Typkonvertierungen sieht VB.NET die Funktionen CBool, CByte, CChar, CDate, CDbl, CDec, CInt, CLng, CObj, CShort, CSng und CStr vor. Beispiel für die Konvertierung eines Strings in eine Integerzahl: intZahl = CInt (txtEingabe.Text) Vgl. Kofler, VB.NET, S. 334ff.

14 Einführung in die Programmierung mit VB.NET 13 Zum Formatieren von Variablen steht die Methode ToString zur Ver- fügung, die auf alle elementaren Datentypen und Objekte angewandt werden kann. Allgemeine Form: String = Variable.ToString("Formatcode") Vordefinierte Formatcodes: CodeBedeutungBeispiel ccurrenyWährungsformat123.456.789,00 € ffixed-pointFestkommaformat123456789,00 f3Festkommaformat mit 3 Nachkommastellen123456789,000 nnumberFormat mit Tausendertrennung123.456.789,00 ppercentProzentzahlen (Achtung: 1 = 100%)0.256  25,60% Beispiel: Dim dblWert As Double = 20999.9 txtAusgabe.Text = dblWert.ToString("c") Formatierungsmethoden Vgl. Kofler, VB.NET, S. 339ff.

15 Einführung in die Programmierung mit VB.NET 14 arithmetische Operatoren: =: einfacher Zuweisungsoperator +: Addition -: Subtraktion *: Multiplikation /: Division \: Ganzzahldivision Mod: Restwertdivision (Modulo-Operation) ^: Potenz (Hochzahl) Beispiele: int3 = int1 + int2 x = (r / s) - (d * r) + v^3 Operatoren in VB.NET (I) Verknüpfung von Zeichenketten: +: verknüpft Zeichenketten &: verknüpft beliebige Datentypen, sofern diese in Zeichenketten um- gewandelt werden können Beispiele: str1 = "ab" + "bc" str2 = "12" & 3 Vgl. Kofler, VB.NET, S. 181ff.

16 Einführung in die Programmierung mit VB.NET 15 Vergleichsoperatoren: >: größer als >=: größer als oder gleich <: kleiner als <=: kleiner als oder gleich =: gleich <>: ungleich Like: Mustervergleich für Zeichenketten logische Operatoren: Not: Negation And: UND-Verknüpfung (auch: AndAlso) Or: ODER-Verknüpfung (auch: OrElse) Xor: exklusives Oder Operatoren in VB.NET (II) Beispiele: intZahl1 < intZahl2 x <> y (s >= 5) And (x = y)

17 Einführung in die Programmierung mit VB.NET Zuweisungsoperatoren: +=-=: erhöht bzw. erniedrigt eine Variable um den an- gegebenen Wert *=/=: multipliziert bzw. dividiert eine Variable um den angegebenen Wert +=&=: fügt einer Zeichenkette eine andere Zeichenkette hinzu Operatoren in VB.NET (III) VB.NET kennt die von C oder Java bekannten Zuweisungsoperatoren wie +=, -= etc. Damit ist a += 1 also eine Kurzschreibweise für a = a + 1. 16

18 Einführung in die Programmierung mit VB.NET Elemente (Variablen, Forms, Steuerelemente u.a.) aussagekräftig benennen –Präfixe verwenden Verwendung von Option Explicit On oder besser Option Strict On Variablen und Parameter mit geeigneten Datentypen versehen immer kleinstmöglichen Gültigkeitsbereich für Variablen und Prozeduren verwenden Inline-Dokumentation –Zweck der Prozedur –Vor Schleifen: Was wird verarbeitet? Ausstiegsbedingung? –... Vgl. Craig/Webb, Workshop, S. 41ff. 17 Exkurs: Richtlinien für guten Programmierstil

19 Einführung in die Programmierung mit VB.NET ButtonBefehlsschaltflächebut CheckBoxKontrollkästchenchk ComboBoxKombinationsfeldcbo Database(ODBC-)Datenbankdb FormFormularfrm LabelBezeichnungsfeldlbl ListBoxListenfeldlst MenuMenümnu PictureBoxBildfeldpic RadioButtonOptionsfelderrad TextBoxTextfeldtxt TimerZeitgebertmr Vgl. Craig/Webb, Workshop, S. 42f. (angepasst an neue Steuerelemente von VB.NET) 18 Präfixe für die Benennung von Steuerelementen

20 Einführung in die Programmierung mit VB.NET 19 Aufgabe 1) Erstellen Sie ein Programm, mit dessen Hilfe Sie in der Lage sind, den Endwert einer Kapitalanlage zu berechnen, wobei >>>> Anlage

21 Einführung in die Programmierung mit VB.NET Verwendung der.NET-Bibliotheken VB.NET beinhaltet bereits von Hause aus eine Vielzahl an Funktionen und Leistungsmerkmalen, die in der sogenannten.NET-Klassenbibliothek bereit- gestellt werden. In VB.NET-Programmen können Sie nur die Klassen, Struk- turen und Methoden solcher Bibliotheken nutzen, auf die Sie in Ihrem Pro- gramm verweisen. Der Zugriff auf die Klassen erfolgt in der Schreibweise System.Klasse.Subklasse (z.B. System.Windows.Forms.Button). Damit bei der Nutzung von Klassen nicht jedes Mal der gesamte Klassenname angegeben werden muss, kann mit dem Schlüsselwort Imports am Beginn einer Codedatei ein Verweis auf sog. Namensräume eingerichtet werden. Ein Namensraum fasst mehrere Klassen, die inhaltlich zusammengehören, zu einer Gruppe zusammen (z.B. System.Windows.Forms). Ein Imports-Verweis bewirkt, dass der Compiler bei der Auflösung von Klassennamen automatisch die entsprechenden Namensräume durchsucht. 20 Vgl. Kofler, VB.NET, S. 193ff.

22 Einführung in die Programmierung mit VB.NET Arithmetische Funktionen Arithmetische Funktionen sind Teil der System.Math-Klasse. Der Zugriff auf diese Funktionen erfolgt demnach in der Schreibweise: System.Math.Funktion(Parameter) Beispiel: dblVar = System.Math.Sqrt(64) 'Ermittelt die Quadratwurzel der Zahl 64 Wenn Sie häufig arithmetische Funktionen einsetzen, sollten Sie die Anweisung Imports System.Math verwenden: Imports System.Math 'am Beginn des Codes... dblVar = Sqrt(64) Wichtige Math-Funktionen: Abs(x), Cos(x), Sin(x), Tan(x), Log(x), Log10(x), Sqrt(x),... Anmerkung: Alle Math-Funktionen erwarten Double-Parameter und liefern Double- Ergebnisse! 21 Vgl. Kofler, VB.NET, S. 293f.

23 Einführung in die Programmierung mit VB.NET 22 Aufgabe 2) Erstellen Sie ein Programm, mit dessen Hilfe die optimale Bestellmenge berechnet werden kann. Die Formel dazu lautet: >>>> Bestellmenge

24 Einführung in die Programmierung mit VB.NET 23 Die IF-THEN-ELSE-Anweisung Ablauf:Allgemeine Form: If Ausdruck Then Anweisung 1... Else Anweisung 2 End If Beispiel: If i=10 Then txtAusgabe.Text = "i ist gleich 10" Else txtAusgabe.Text = "i ist ungleich 10" End If ElseIf Ausdruck Then Anweisung Vgl. Kofler, VB.NET, S. 162

25 Einführung in die Programmierung mit VB.NET 24 Aufgabe 3) Schreiben Sie ein Programm, das bei Eingabe des zu versteuernden Einkom- mens die Einkommensteuer berechnet (siehe § 32a EStG). Es gilt: x <= 7235T = 0 7236 <= x <= 9251T = (768,85*y +1990)*y, mit y=(x-7200)/10000 9252 <= x <= 55007T = (278,65*z+2300)*z, mit z=(x-9216)/10000 55008 <= xT = 0,485*x - 9872 wobei x = zu versteuerndes Einkommen und T = Einkommensteuer >>>> Steuer

26 Einführung in die Programmierung mit VB.NET 25 Die FOR-NEXT-Schleife Ablauf: Allgemeine Form: For Zähler=Start To Ende [Step Schrittweite] Anweisungsblock Next [Zähler] Beispiel: For i=1 To 10 txtAusgabe.Text = "i = " & i.ToString x = x * i Next i *)Das ‚>‘-Zeichen gilt nur für einen positiven Step. Bei negativem Step gilt analog ein ‚<‘-Zeichen. Vgl. Kofler, VB.NET, S. 165f.

27 Einführung in die Programmierung mit VB.NET 26 Aufgabe 4) für ein beliebiges n berechnet werden kann. >>>> Reihe Schreiben Sie ein Programm, mit dessen Hilfe die geometrische Reihe

28 Einführung in die Programmierung mit VB.NET 27 Die ListBox (I) Das Steuerelement ListBox bietet die Möglichkeit, Listen darzustellen und ein Element bzw. mehrere Elemente aus diesen auszuwählen. Hinzufügen von Elementen in die ListBox: ListBox.Items.Add (Objekt):fügt der Liste ListBox ein Element als neue Zeile hinzu ListBox.Items.Insert (Index, Objekt) :fügt der Liste ListBox ein Element an der Stelle Index hinzu Zugriff auf Element aus der ListBox: ListBox.Items (Index) :liefert das Element mit der angegebenen Index- nummer aus der Liste ListBox Listenauswahl auswerten (nur bei Einfachauswahl!): ListBox.SelectedItem :verweist auf das ausgewählte Element (Nothing, wenn nichts ausgewählt) ListBox.SelectedIndex :gibt die Indexnummer des ausgewählten Elementes an (-1, wenn nichts ausgewählt) ListBox.Text:enthält die Zeichenkette des ausgewählten Elementes

29 Einführung in die Programmierung mit VB.NET Entfernen von Elementen aus der ListBox: ListBox.Items.Remove (Objekt) :entfernt ein spezifiziertes Element aus der Liste ListBox; Beispiel: ListBox.Items.Remove (ListBox.SelectedItem) ' entfernt das ausgewählte Element aus der Liste ' ListBox ListBox.Items.RemoveAt (Index) :entfernt das Element mit der angegebenen Index- nummer aus der Liste ListBox; Beispiel: ListBox.Items.RemoveAt (ListBox.SelectedIndex) ' entfernt das ausgewählte Element aus der Liste ' ListBox ListBox.Items.Clear: löscht den Inhalt der gesamten Liste ListBox Anzahl der Elemente in einer ListBox: ListBox.Items.Count:liefert die Anzahl der Elemente der Liste ListBox; Index des letzten Elements: ListBox.Items.Count-1 Anmerkung: Der Index einer ListBox fängt mit Null an! 28 Die ListBox (II) Vgl. Kofler, VB.NET, S. 612ff.

30 Einführung in die Programmierung mit VB.NET 29 Aufgabe 5) Erstellen Sie ein Programm, welches für die Zahlen 1 bis 5 das Einmaleins aus- gibt; d.h. 1*1, 1*2,..., 5*5. Schreiben Sie das Ergebnis in eine Liste. >>>> Einmaleins

31 Einführung in die Programmierung mit VB.NET 30 Die DO-LOOP-Schleifen Ablauf: Allgemeine Form: Do Anweisungsblock Loop [{While | Until} Ausdruck] Beispiel: Do x=i*10 i=i+1 Loop While i<>20 Anmerkung: Auch hinter Do können Bedingungen mit den Schlüsselwörtern While oder Until angegeben werden. Vgl. Kofler, VB.NET, S. 166f.

32 Einführung in die Programmierung mit VB.NET 31 Aufgabe 6) Erstellen Sie ein Programm, welches den Verlauf eines Kredites zeigt. Abgefragt werden soll die Kreditsumme, der Tilgungsbetrag und der Zinssatz (p.a. und in Prozent). Die Tilgung soll monatlich erfolgen. In jedem Monat fallen somit eine Tilgungsrate und eine Zinszahlung in Höhe auf die noch vor der Tilgung vorhan- dene Restkreditsumme an. Der Kredit ist dann abgelaufen, wenn keine Restkredit- summe mehr vorhanden ist. Ausgegeben werden soll für jede Periode die Num- mer des Monats, der Tilgungsbetrag, die geleistete Zinszahlung und der verblei- bende Restkreditbetrag. Verwenden Sie dazu auch eine Liste. >>>> Kredit

33 Einführung in die Programmierung mit VB.NET Ein Feld ist eine Zusammenfassung mehrerer Variablen gleichen Datentyps un- ter einer Bezeichnung. Der Zugriff zu den Feldelementen erfolgt nicht über einen Variablennamen, sondern mittels eines Laufindex. Vorteil von Feldern: Statt umfangreicher Deklarationen ist nur eine Deklaration notwendig; z.B. montag,..., freitag  woche(Index). Bei der Deklaration eines Feldes wird die maximale Zahl der Feldelemente i.d.R. direkt festgelegt. Unabhängig davon muss jedoch nicht jedes Feldelement später mit einem Wert belegt werden. Allgemeine Form der Deklaration eines Feldes: Dim Feldname(Elementzahl) As Datentyp Beispiel: Dim vektor(10) As Integer  erzeugt Feld mit 11 Elementen! Der Zugriff erfolgt dann z.B. über vektor(1) = 1oder intZahl = vektor(9) Anmerkung: Der Index fängt mit Null an! Vgl. Kofler, VB.NET, S. 139ff. 32 Felder in VB.NET (I)

34 Einführung in die Programmierung mit VB.NET 33 feld(0) feld(1) feld(2) feld(3) feld(4) feld(5) feld(6) feld(7) feld(8) feld(9) 1 2 3 4 5 6 7 8 9 10 Dim i As Integer Dim feld(9) As Integer For i=0 To 9 feld(i) = i+1 Next i feld(3) = feld(3) * 4 feld(7) = feld(5) + feld(8) * feld(2) Beispiel: feld(0) feld(1) feld(2) feld(3) feld(4) feld(5) feld(6) feld(7) feld(8) feld(9) 1 2 3 16 5 6 7 33 9 10 Felder in VB.NET (II)

35 Einführung in die Programmierung mit VB.NET 34 >>>> Kapitalwert Schreiben Sie ein Programm zur Berechnung des Kapitalwertes. Die Formel zur Berechnung ist: Aufgabe 7)

36 Einführung in die Programmierung mit VB.NET 35 Felder können in Visual Basic auch mehrere Dimensionen haben. Die Deklaration erfolgt in der Form Dim Feldname(x,...) As Datentyp Beispiel für ein zweidimensionales Feld: Dim Matrix(2,3) As Single  erzeugt Feld mit 3*4=12 Elementen! Verwendung im Programm: Matrix(1,2) = x * 27 + 5 Auch wenn ein solches Feld für den Programmierer mehrere Dimensionen umfasst, wird es im Speicher sequentiell abgelegt: 0123 0 1 2 Matrix(2,3) Matrix(0,0) Matrix(0,1) Matrix(0,2) Matrix(0,3) Matrix(1,0) Matrix(1,1) Matrix(1,2) Matrix(1,3) Matrix(2,0) Matrix(2,1) Matrix(2,2) Felder in VB.NET (III)

37 Einführung in die Programmierung mit VB.NET 36 Schleife über alle Steuerelemente (I) Bei For-Each-Schleifen durchläuft die Schleifenvariable alle Elemente eines angegebenen Felds bzw. einer Aufzählung. Das folgende Beispiel verdeutlicht die Syntax. Der Datentyp der Schleifenvariable muss mit dem des Felds bzw. der Aufzählung übereinstimmen. Die Schleife kann vorzeitig mit Exit For abgebrochen werden. Beispiel: Dim i As Integer Dim Vektor() As Integer = {12, 7, 4} For Each i In Vektor MsgBox ("Der Vektor enthält: " & i) Next Vgl. Kofler, VB.NET, S. 166

38 Einführung in die Programmierung mit VB.NET 37 Die Eigenschaft Controls von Formularen bzw. von Container-Steuer- elementen (z.B. GroupBox, Panel) verweist auf alle Steuerelemente im Formular bzw. Container. Mit einer For-Each-Schleife kann bequem auf diese Aufzählung von Steuerelementen zugegriffen werden. Beispiel: Dim c As Control Dim Farbe As String For Each c In pnlFarbe.Controls Farbe = Mid(c.Name, 4) MsgBox(Farbe,, "Farbe") Next Vgl. Kofler, VB.NET, S. 690-696 Schleife über alle Steuerelemente (II)

39 Einführung in die Programmierung mit VB.NET 38 Schreiben Sie ein Programm, welches die Multiplikation zweier 3x3-Matrizen vornimmt und das Ergebnis in einer Ergebnismatrix ausgibt. >>>> MatMul Aufgabe 8)

40 Einführung in die Programmierung mit VB.NET Prozeduren sind die Zusammenfassung von Code-Teilen unter einem einheitlichen Namen. Sie können sich gegenseitig aufrufen und dabei Parameter übergeben. Der Aufruf erfolgt durch Nennung des Prozedurnamens sowie der Übergabe der gefor- derten Parameter. Allgemeine Struktur: Sub Prozedurname (Parameterliste) lokale Variablen Anweisungen End Sub Beispiel: Sub Addiere (ByVal Z1 As Integer, ByVal Z2 As Integer, ByVal txt As TextBox) Dim Ergebnis As Integer Ergebnis = Z1 + Z2 txt.Text = Ergebnis.ToString("n0") End Sub Aufruf mit: Addiere (2, 5, txtAusgabe) Vgl. Kofler, VB.NET, S. 167 39 Prozeduren (I)

41 Einführung in die Programmierung mit VB.NET Es existieren zwei Arten der Parameterübergabe: (1)Call by value (als Wertparameter) - Übergabe des Wertes der Variablen - Wert wird für die Prozedur im Speicher kopiert - Veränderungen des Wertes innerhalb der Prozedur betreffen nur die Kopie Beispiel: Sub Berechne (ByVal a As Integer, ByVal b As Single) (2)Call by reference (als Rückgabeparameter) - Übergabe der Adresse der Variablen - Adresse wird für die Prozedur im Speicher kopiert - Veränderungen des Wertes innerhalb der Prozedur betreffen auch die aufrufende Prozedur Beispiel: Sub Berechne (ByRef a As Integer, ByRef b As Single) Vgl. Kofler, VB.NET, S. 174 40 Prozeduren (II)

42 Einführung in die Programmierung mit VB.NET 41 Prozeduren (III) Sub Berechne_Click Dim a As Integer a = 5 txtTest.Text = a.ToString Aendere1 (a) txtTest.Text = a.ToString Aendere2 (a) txtTest.Text = a.ToString End Sub Sub Aendere1 (ByVal a As Integer) a = 6 txtTest.Text = a.ToString End Sub Sub Aendere2 (ByRef a As Integer) a = 6 txtTest.Text = a.ToString End Sub Vor den Prozeduren: txtTest.Text = 5 Innerhalb Aendere1: txtTest.Text = 6 Nach Aendere1: txtTest.Text = 5 Innerhalb Aendere2: txtTest.Text = 6 Nach Aendere2: txtTest.Text = 6 Beispiel:Ergebnis:

43 Einführung in die Programmierung mit VB.NET 42 Fehlerabsicherung mit Try-Catch Um zu vermeiden, dass ein unerwarteter Fehler zur Anzeige eines Fehlerdialoges und zum anschließenden Programmende führt, kann der Code mit einer Try-Catch- Konstruktion abgesichert werden. Allgemeine Form: Try Code, der eventuell Fehler auslösen könnte Catch Code, um auf den Fehler zu reagieren End Try Beispiel: Try'wurde in txtPruef ein Double-Wert eingegeben? Dim Dummy As Double Dummy = CDbl(txtPruef.Text) Catch'wenn nicht, dann MessageBox.Show("Fehler!")'Dialogfenster mit Fehlermeldung anzeigen txtPruef.Text = ""'TextBox wieder leeren txtPruef.Focus()'Cursor in leerer Textbox blinken lassen End Try Vgl. Kofler, VB.NET, S. 479ff.

44 Einführung in die Programmierung mit VB.NET 43 Validating-Ereignis Es gibt verschiedene Zeitpunkte, zu denen überprüft werden kann, ob Benutzer- eingaben in einem Steuerelement korrekt sind. Ein möglicher Zeitpunkt ist der des Fokuswechsels, also der Moment, in dem ein Steuerelement wieder verlassen werden soll. Dann tritt das Validating-Ereignis des Steuerelementes auf. Erzeugung einer Code-Schale für das Validating-Ereignis eines Steuerelementes: -Öffnen des Codefensters -im linken Listenfeld das gewünschte Steuerelement auswählen -im rechten Listenfeld das Validating-Ereignis auswählen Hinweis: Analog können auch Code-Schalen für andere Ereignisse erzeugt werden. Vgl. Kofler, VB.NET, S. 590, 727

45 Einführung in die Programmierung mit VB.NET 44 Aufgabe 9) Erweitern Sie das Programm zur Ermittlung der Optimalen Bestellmenge (Auf- gabe 2) um eine Prozedur zur Plausibilitätsprüfung von Benutzereingaben. Die Prozedur soll als Parameter die zu überprüfende TextBox und den gefor- derten Datentyp übergeben bekommen. Die Prozedur soll jeweils aufgerufen werden, wenn der Benutzer nach einer Eingabe versucht, die TextBox zu ver- lassen. >>>> Bestellmenge1

46 Einführung in die Programmierung mit VB.NET 45 Funktionen Funktionen arbeiten ähnlich wie Prozeduren, geben jedoch als Ergebnis einen Wert zurück. Dieser Rückgabewert kann einen beliebigen Datentyp haben. Innerhalb der Funktion erfolgt die Angabe des Rückgabewertes mit dem Schlüsselwort Return oder mit einer Zuweisung an den Funktionsnamen. Allgemeine Struktur: Function Funktionsname (Parameterliste) As Datentyp lokale Variablen Anweisungen End Function Beispiel: Function Summe (ByVal a As Integer, ByVal b As Integer) As Integer Summe = a + b 'auch möglich: Return a+b End Function Aufruf mit: c = Summe(a, b) Vgl. Kofler, VB.NET, S. 167ff.

47 Einführung in die Programmierung mit VB.NET 46 Aufgabe 10) Modifizieren Sie das Programm zur Matrizenmultiplikation (Aufgabe 8): 1.Das Einlesen der Matrizen M1 und M2 soll eine Funktion übernehmen, die als Parameter das Panel-Steuerelement übergeben bekommt, in welchem sich die Textfelder der einzulesenden Matrix befinden. Der Rückgabewert soll die eingelesene 2x2-Matrix enthalten. Tip! Der Funktionskopf könnte so aussehen: Function MatrixEinlesen(ByVal pnl As Panel) As Double(,) 2.Das Ausgeben der Ergebnismatrix soll eine Prozedur übernehmen, die als Parameter das Panel-Steuerelement, in welchem sich die Textfelder für die Matrix-Ausgabe befinden, und die auszugebende 2x2-Matrix erhält. Tip! Der Prozedurkopf könnte so aussehen: Sub MatrixAusgeben(ByVal pnl As Panel, ByVal M As Double(,)) >>>> MatMul1

48 Einführung in die Programmierung mit VB.NET 47 Arbeiten mit mehreren Forms (I) Visual-Basic-Programme bestehen i.d.R. aus mehreren Forms. Mit dem Menüpunkt "Projekt - Windows Form hinzufügen..." können zu einem Projekt weitere Forms hinzugefügt werden. Üblicherweise werden die Forms dann im Windows Form Designer gestaltet, womit man im Prinzip jedes Mal eine neue Klasse entwirft. Anschließend können von den so neu geschaffenen Form-Klassen während der Laufzeit Objektinstanzen erzeugt (New-Konstruktor) und angezeigt werden. Vgl. Kofler, VB.NET, S. 718, 722, 757ff.

49 Einführung in die Programmierung mit VB.NET 48 Arbeiten mit mehreren Forms (II) (1)Modale Forms (ShowDialog) Wird eine Form modal angezeigt, so bedeutet dies, dass der Anwender auf diese Form reagieren muss. Solange eine modale Form am Bildschirm angezeigt wird, kann kein anderes Fenster mehr bedient werden - die Codeausführung stoppt, bis die modale Form wieder geschlossen wird. Code-Beispiel: Dim frm As New frmInfo frm.ShowDialog() (2)Gleichberechtigte Forms (Show) Wird eine Form gleichberechtigt ange- zeigt, so können die anderen Fenster weiterhin parallel bedient werden. Code-Beispiel: Dim frm As New frmInfo frm.Show() Unterscheidung beim Anzeigen neuer Form-Objekte: In beiden Fällen kann ein angezeigtes Form-Objekt mit -Me.Closewieder geschlossen oder mit -Me.Hideausgeblendet werden. Vgl. Kofler, VB.NET, S. 758ff.

50 Einführung in die Programmierung mit VB.NET 49 Aufgabe 11) Erweitern Sie das Kapitalwertprogramm, indem Sie einen "Info"-Button in die Hauptform einfügen, bei dessen Betätigung sich eine neue Form modal öffnet, die den Namen des Programms sowie dessen Autor ausweist. >>>> Kapitalwert1

51 Einführung in die Programmierung mit VB.NET Problem beim Arbeiten mit mehreren Forms ist, dass diese unabhängig vonein- ander auf dem Bildschirm dargestellt werden. Häufig ist es sinnvoll, ein Haupt- fenster zu bestimmen. MDI-Anwendungen ermöglichen dies. MDI steht für Multiple Document Interface und bedeutet, dass in einem meist bild- schirmfüllenden Hauptfenster mehrere Dokumentfenster angezeigt werden. Es kann pro Anwendung nur eine MDI-Form geben. Sie muss die Start-Form sein. Erstellt wird sie wie eine gewöhnliches Form, lediglich die IsMdiContainer-Eigen- schaft wird auf True gestellt. Um dann eine Form als Subfenster der MDI-Form anzuzeigen, muss beim Aufruf der Form die Eigenschaft MdiParent den Wert Me zugewiesen bekommen, der auf das Hauptfenster verweist. Beispiel: Dim frmInfo As New frmInfo() frmInfo.MdiParent = Me frmInfo.Show() Vgl. Kofler, VB.NET, S. 768ff. 50 MDI-Anwendungen

52 Einführung in die Programmierung mit VB.NET 51 Menüs Um eine Form mit einem Menü auszustatten, fügt man einfach das Steuerelement MainMenu aus der Toolbox in diese ein. Das noch leere Menü erscheint dann automatisch am oberen Ende der Form. Die Benennung der einzelnen Menüpunkte kann einfach per Tastatur direkt im For- mular erfolgen. Alternativ kann für die einzelnen Menüpunkte auch die Text- Eigenschaft im Eigenschaftsfenster verändert werden. Bevor per Doppelklick Click-Ereignisprozeduren zu den einzelnen Menüeinträgen in den Code eingefügt werden, sollten diese zunächst unbedingt aussagekräftig benannt werden. Dies erfolgt wie üblich durch Verändern der Name-Eigenschaft im Eigenschaftsfenster. Vgl. Kofler, VB.NET, S. 780ff.

53 Einführung in die Programmierung mit VB.NET 52 Aufgabe 12) Erstellen Sie ein Programm bestehend aus einer MDI-Form "Faktur", die folgen- des Menü enthält: Füllen Sie den Menüpunkt "Ende" mit dem Befehl, der das Programm beendet, und erstellen Sie eine zweite Form, die Informationen über den Programmierer enthält und über den Menüpunkt "Info" angesprochen wird. >>>> Faktur AktionVerwaltungStatistikInfo GeschäftKundenUmsätze EndeArtikelArtikel

54 Einführung in die Programmierung mit VB.NET 53 Arbeiten mit Datenbanken: Relationale Datenbanken VB.NET unterstützt das Arbeiten mit unterschiedlichen Datenbanken. Schnitt- stellen für den Datenzugriff stehen unter anderem für Access- und SQL-Server- Datenbanken, aber auch für Oracle- oder IBM-Datenbanken zur Verfügung. Ins- besondere relationale Strukturen können einfach bearbeitet werden. Beispiel einer relationalen Datenbank: KNRNameVorname 1RoßbachPeter 2HasenkampUlrich 3MeierErwin 4MüllerUwe 5SchmidtHans ANRBezeichnungPreis 1Rechner3000 2Tastatur200 3Monitor900 4Drucker700 KNRANR 1 1 2 2 1 2 2 3 3 4 Tabelle: Kunde Tabelle: Geschäft Tabelle: Artikel Datenbank: Verwaltung

55 Einführung in die Programmierung mit VB.NET 54 Arbeiten mit Datenbanken: SQL als Abfragesprache Allgemeine Form für SELECT-Abfragen in SQL: SELECT Attribut[,Attribut1,...] FROM Tabelle [WHERE Bedingung] Beispiele: SELECT * FROM Kunde SELECT KNR FROM Kunde WHERE Name='Roßbach' AND Vorname='Peter' SELECT ANR FROM Geschaeft WHERE KNr=1 SELECT Bezeichnung, Preis FROM Artikel WHERE ANR=2 KNRNameVorname 1RoßbachPeter 2HasenkampUlrich 3MeierErwin 4MüllerUwe 5SchmidtHans Tabelle: Kunde KNRANR 1 1 2 2 1 2 2 3 3 4 Tabelle: Geschäft ANRBezeichnungPreis 1Rechner3000 2Tastatur200 3Monitor900 4Drucker700 Tabelle: Artikel Datenbank: Verwaltung Vgl. Kofler, VB4, S. 580ff.

56 Einführung in die Programmierung mit VB.NET 55 ADO.NET ist eine Datenzugriffsschnittstelle von VB.NET. ADO.NET ist Teil des.NET-Frameworks und wird über zahlreiche Klassen der Bibliothek System.Data verwendet. Eine Anwendung benutzt die ADO.NET-Programmierschnittstelle, um abstra- hierend auf eine Datenquelle zugreifen zu können. ADO.NET bedient sich so genannter.NET Data Provider, um den eigentlichen Zugriff, z.B. auf Oracle- Datenbanken oder SQL-Server, zu tätigen. Einen Data Provider kann man sich als eine Art Treiber vorstellen. Um einen Zugriff auf Access-Datenquellen zu realisieren wird der OLEDB.NET Data Provider verwendet, welcher einen Treiber für Access-Datenbanken besitzt (so genannter Jet-Treiber "Microsoft.Jet.OLEDB.4.0"). Quelle: Christian Weyer: XML Web Service-Anwendungen mit MS.NET, Addison-Wesley, München u.a. 2002, S. 118 ff. ADO.NET: Einführung

57 Einführung in die Programmierung mit VB.NET 56 Das DataSet-Objekt von ADO.NET besitzt die Fähigkeit, komplexe Datenstrukturen (Tabellen und deren Beziehungen) im Hauptspeicher abzubilden und über einen längeren Zeitraum hinweg im Programm zu halten. Wenn man ein DataSet-Objekt erzeugt hat, kann man mit ihm arbeiten als wäre es eine Datenbank im Hauptspei- cher. Ein DataSet-Objekt kann gänzlich unabhängig von einer Datenquelle genutzt wer- den, indem es manuell vom Programmcode aus erstellt und gefüllt wird. Es ist aber auch möglich, ein DataSet-Objekt mit einer Datenquelle, z.B. einer Access- Datenbank, zu verbinden. Als Mediator-Objekt zwischen einem DataSet und einer Datenquelle dient dabei ein DataAdapter, welcher die Verbindung realisiert und kontrolliert. Über den DataAdapter kann man Tabellen in einem DataSet füllen. Außerdem kann der DataAdapter Änderungen, die im DataSet vorgenommen wurden, auch an die Datenquelle weitergeben und dort umsetzen, ohne dass das DataSet von der Quelle weiß. Der DataAdapter wiederum benötigt eine Verbindung über ein Connection-Objekt, um mit der Datenbank zu kommunizieren. Quelle: Christian Weyer: XML Web Service-Anwendungen mit MS.NET, Addison-Wesley, München u.a. 2002, S. 142 ff. ADO.NET: Das DataSet-Objekt

58 Einführung in die Programmierung mit VB.NET 57 ADO.NET: Objekte für den Datenzugriff Datenquelle (z.B. Access-Datenbank) Connection-ObjektDataAdapter-ObjektDataSet-Objekt DataView- Objekt verweist auf die Datenquelle implementiert die Treiberfunktionalität für unterschiedliche Daten- quellenarten, z.B. "Microsoft.Jet.OLEDB.4.0"-Treiber für Access- Datenbanken Speicherrepräsentation eines (komplexen) Datenbestandes realisiert und kontrolliert die Verbindung zwischen DataSet und Datenquelle vollzieht Füll-, Änderungs- und Löschoperationen beschreibt eine bestimmte Ausprägung (View) eines DataSet geeignet für DataBinding von Steuerelementen für ein DataSet können gleichzeitig mehrere DataViews existieren

59 Einführung in die Programmierung mit VB.NET 58 Im Folgenden werden die notwendigen Programmierschritte beschrieben, um von einer Form aus mit den Daten einer externen Access-Datenquelle arbeiten zu kön- nen. 1.Einrichten eines Verweises auf die für den Datenzugriff benötigte Klassen- bibliothek: Imports System.Data 2. Deklaration der für den Datenzugriff benötigen Objekte: Dim objConnection As OleDb.OleDbConnection = _ New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; _ Data Source=d:\AccessDB.mdb") Dim objDataAdapter As OleDb.OleDbDataAdapter Dim objDataSet As DataSet Dim objDataView As DataView 3.Öffnen der Datenbank-Verbindung: objConnection.Open() ADO.NET: Datenbankzugriff (I)

60 Einführung in die Programmierung mit VB.NET 59 4.Gleichzeitiges Instanzieren und Konfigurieren des DataAdapters: objDataAdapter = New OleDb.OleDbDataAdapter _ ("SELECT * FROM Tabellenname", objConnection) 5. Instanzieren und Füllen des DataSet: objDataSet = New DataSet() objDataAdapter.Fill(objDataSet, "Tabellenname") 6.Erzeugen eines DataView-Objektes, das auf die gesamte Tabelle im DataSet- Objekt verweist: objDataView = New DataView(objDataSet.Tables("Tabellenname")) Hinweis: Das DataView-Objekt zeigt zunächst per Default auf den ersten Datensatz der Tabelle! 7. Anbinden eines Textfeldes an ein Datenfeld (= Spalte in Tabelle): Me.txtTextBox.DataBindings.Add("Text", objDataView, "Feldname") Hinweis: Das Anbinden anderer Steuerelemente erfolgt analog! ADO.NET: Datenbankzugriff (II)

61 Einführung in die Programmierung mit VB.NET 60 Wenn eine Form, von der aus ein Datenbankzugriff erfolgte, geschlossen wird, sollte die Verbindung zur Datenbank getrennt und ein eventuell gefülltes DataSet-Objekt geleert werden: objConnection.Close() objDataSet = Nothing ADO.NET: Datenbankzugriff (III)

62 Einführung in die Programmierung mit VB.NET 61 Aufgabe 13) Erweitern Sie das Programm aus Aufgabe 12), indem Sie eine Form Kunden- verwaltung erstellen, die über den Menüpunkt "Verwaltung/Kunde" aufgerufen wird. Kopieren Sie dabei zunächst die Datenbank dbFaktur.mdb auf Ihre lokale Festplatte. Beim Aufruf der Form soll der Inhalt der Tabelle tabKunden aus dbFaktur.mdb in ein DataSet geladen und der erste Datensatz angezeigt werden. >>>> Faktur1

63 Einführung in die Programmierung mit VB.NET ADO.NET: Datenbankzugriff (IV) Austausch von Connection und DataAdapter für den Zugriff auf den SQL-Server 1.Einbinden der Klasse Systems.Data.SQLClient Imports System.Data.SQLClient 2.Einrichten eines Verweises auf die für den Datenzugriff benötigte Klassen-bibliothek: Imports System.Data.SQLClient 3.Deklaration der für den Datenzugriff benötigen Objekte Dim objConnection As SQLConnection Dim objDataAdapter As SQLDataAdapter 4.Instanziieren der Connection objConnection = New SqlConnection _ ("Data Source=localhost; _ Integrated Security=true; _ Initial Catalog = dbFaktur") 5.Instanziieren des Data Adapters objDataAdapter = New SQLDataAdapter _ (“Select * from tabKunden”, _ objConnection)

64 Einführung in die Programmierung mit VB.NET 63 Sobald in einer Form Steuerelemente an eine Datenquelle mit DataBindings.Add gebunden wurden, verwaltet ein Objekt der BindingContext-Klasse (welche von der BindingManagerBase-Klasse erbt) sämtliche Binding-Objekte. Das BindingContext-Objekt sorgt dafür, dass in allen gebundenen Steuerelementen, die sich auf die gleiche Datenquelle beziehen, das jeweils aktuelle Datenelement angezeigt wird. Sind bspw. Textfelder an unterschiedliche Spalten einer Datentabelle gebunden, so zeigen diese Textfelder stets synchron Daten desselben Datensatzes an - wird die Position im BindingContext-Objekt geändert, dann werden alle Textfelder aktualisiert. ADO.NET: Navigation mit BindingContext (I)

65 Einführung in die Programmierung mit VB.NET 64 Wichtige Eigenschaften der BindingContext-Klasse: BindingContext(DataView).Position -gibt an, auf welchen Datensatz die gebundenen Steuerelemente zeigen oder legt diesen fest -Position ist ein nullbasierter Index! BindingContext(DataView).Count -liefert die Anzahl der Zeilen, die vom BindingContext-Objekt verwaltet werden -BindingContext(DataView).Count-1 zeigt auf den letzten Datensatz des BindingContext-Objektes ADO.NET: Navigation mit BindingContext (II)

66 Einführung in die Programmierung mit VB.NET 65 Aufgabe 14) Erweitern Sie das Programm aus Aufgabe 13), indem Sie der Form Kundenver- waltung Datensatznavigatoren hinzufügen, die jeweils zum ersten, vorherigen, nächsten oder letzten Datensatz springen. Weiterhin soll in einem Label-Steuerelement jeweils angezeigt werden, auf wel- chem von wievielen Datensätzen man sich gerade befindet. >>>> Faktur2

67 Einführung in die Programmierung mit VB.NET 66 Um die in einem DataSet-Objekt vorgenommenen Änderungen an einem Daten- bestand an die zugrundeliegende Datenquelle weiterzugeben, sind komplexe SQL- Anweisungen (Insert-, Delete- und Update-Statements) notwendig. Der OleDbDataAdapter generiert nicht automatisch diese SQL-Anweisungen, die für den Abgleich von Änderungen an einem DataSet mit der zugeordneten Datenquelle erforderlich sind. Man kann jedoch ein OleDbCommandBuilder- Objekt erstellen, um SQL-Anweisungen für das Aktualisieren einzelner Tabellen automatisch zu generieren, indem man die SelectCommand-Eigenschaft von OleDbDataAdapter festlegt. Anschließend werden alle zusätzlichen, zuvor nicht festgelegten SQL-Anweisungen vom OleDbCommandBuilder generiert. Code-Beispiel: Dim objCommandBuilder As OleDb.OleDbCommandBuilder objDataAdapter.SelectCommand = New OleDb.OleDbCommand _ ("SELECT * FROM Tabellenname", objConnection) objCommandBuilder = New OleDb.OleDbCommandBuilder(objDataAdapter) ADO.NET: CommandBuilder

68 Einführung in die Programmierung mit VB.NET 67 Zur Aufnahme neuer Datensätze in ein DataSet-Objekt, muss diesem zunächst eine neue Zeile hinzugefügt werden. Anschließend kann man die neue Zeile be- schreiben und dann fest in das DataSet-Objekt übernehmen. Um die am DataSet-Objekt vorgenommenen Änderungen auch in der zugrunde- liegenden Datenquelle persistent zu machen, muss der DataAdapter die Update- Methode ausführen. Code-Beispiel: Dim objZeile As DataRow objZeile = objDataSet.Tables("Tabellenname").NewRow() objZeile.Item("Feldname1") = txtTextfeld1.Text objZeile.Item("Feldname2") = txtTextfeld2.Text objDataSet.Tables("Tabellenname").Rows.Add(objZeile) objDataAdapter.Update(objDataSet, "Tabellenname") ADO.NET: Datenmanipulation (I)

69 Einführung in die Programmierung mit VB.NET 68 Das Ändern von bestehenden Datensätzen erfolgt analog zur Aufnahme. Anstatt eine neue Zeile zu erzeugen, gibt man mit Rows(Index) an, welche Zeile des DataSet man ändern möchte. Danach leitet man das Ändern im DataSet mit der Methode BeginEdit ein und beendet es mit der Methode EndEdit. Zum Übernehmen der am DataSet gemachten Änderungen muss der DataAdapter auch hier die Update-Methode ausführen. Code-Beispiel: Dim objZeile As DataRow objZeile =objDataSet.Tables("Tabellenname").Rows _ (BindingContext(objDataView).Position) objZeile.BeginEdit() objZeile.Item("Feldname1") = txtTextfeld1.Text objZeile.Item("Feldname2") = txtTextfeld2.Text objZeile.EndEdit() objDataAdapter.Update(objDataSet, "Tabellenname") ADO.NET: Datenmanipulation (II)

70 Einführung in die Programmierung mit VB.NET 69 Zum Löschen von bestehenden Datensätzen aus einem DataSet, wendet man die Delete-Methode auf eine bestimmte Zeile des DataSet an. Zum Übernehmen der am DataSet gemachten Änderungen muss der DataAdapter auch hier die Update-Methode ausführen. Code-Beispiel: objDataSet.Tables("Tabellenname").Rows(Index).Delete() objDataAdapter.Update(objDataSet, "Tabellenname") ADO.NET: Datenmanipulation (III)

71 Einführung in die Programmierung mit VB.NET 70 Aufgabe 15) Erweitern Sie das Programm aus Aufga- be 14), indem Sie der Form Kundenver- waltung folgende Buttons zur Datenmani- pulation hinzufügen: Neu-Button: soll die Textfelder des Formulars leeren Anhängen-Button: soll einen neu eingegebenen Datensatz speichern Ändern-Button: soll einen geänderten Datensatz speichern Löschen-Button: soll den angezeigten Datensatz löschen >>>> Faktur3

72 Einführung in die Programmierung mit VB.NET 71 Aufgabe 16) Erweitern Sie das Programm aus Aufgabe 15), indem Sie eine Form Artikelver- waltung erstellen, die über den Menüpunkt "Verwaltung/Artikel" aufgerufen wird. Beim Aufruf der Form soll der Inhalt der Tabelle tabArtikel aus dbFaktur.mdb in ein DataSet-Objekt geladen und der erste Datensatz angezeigt werden. Des Weiteren sollen analog zur Kundenverwaltung Datensatznavigatoren sowie Buttons zur Datenmanipulation ergänzt werden. >>>> Faktur4

73 Einführung in die Programmierung mit VB.NET 72 Mit Hilfe des Schlüsselwortes AS können die Attribute von SQL-Abfragen unter anderem Namen bereitgestellt werden. Allgemeine Form: SELECT Attribut AS Name FROM Tabelle [WHERE Bedingung] Beispiel: Query = "SELECT KNR AS Kundennummer FROM tabKunde" objDataAdapter = New OleDb.OleDbDataAdapter(Query, objConnection) objDataAdapter.Fill(objDataSet, "tabKunde") objDataView = New DataView(objDataSet.Tables("tabKunde")) Me.txtKNr.DataBindings.Add("Text", objDataView, "Kundennummer") Statt Attribute können in SQL-Abfragen auch Funktionen verwendet werden: Allgemeine Form: SELECT Funktion AS Name FROM Tabelle [WHERE Bedingung] Beispiel: Query = "SELECT MAX(KNR) AS Kmax FROM tabKunde" Arbeiten mit Datenbanken: Erweiterte Abfragen mit SQL

74 Einführung in die Programmierung mit VB.NET 73 Eine ComboBox ist eine Kombination aus einer Liste und einem Textfeld. Die Eigenschaften und Methoden der ComboBox sind weitgehend die gleichen wie bei der Liste. Es existiert darüber hinaus noch ein Textfeld mit dem Eigenschaftsnamen "Text". Es kann direkt beschrieben werden. Eine Auswahl aus der darunter liegenden Liste hat jedoch immer das Über- schreiben des Textfeld-Inhalts zur Folge. Vgl. Kofler, VB.NET, S. 625ff. Das ComboBox-Steuerelement (I)

75 Einführung in die Programmierung mit VB.NET 74 Bei der ComboBox kann nicht nur die Text-Eigenschaft an ein konkretes Datenfeld mit Databindings.Add gebunden werden, sondern eine komplette Spalte einer Tabelle kann an das Listenfeld der ComboBox gebunden werden. Um dies zu realisieren weist man der DataSource-Eigenschaft der ComboBox ein DataView-Objekt zu und gibt anschließend mit der DisplayMember- Eigenschaft der ComboBox an, welche Spalte des DataView-Objektes in der Liste angezeigt werden soll. Code-Beispiel: Query = "SELECT KNR, [zuname] & ', ' & [vorname] AS Name FROM Kunden" adapterKunden = New OleDb.OleDbDataAdapter (Query, objConnection) adapterKunden.Fill(objDataSet, "Kunden") viewKunden = New DataView(objDataSet.Tables("Kunden")) Me.cboKunde.DataBindings.Add("Text", viewKunden, "Name") Me.cboKunde.DataSource = viewKunden Me.cboKunde.DisplayMember = "Name" Ein Objekt der BindingContext-Klasse sorgt auch hier dafür, dass stets ein Verweis auf den aktuellen Datensatz vorliegt. Das ComboBox-Steuerelement (II)

76 Einführung in die Programmierung mit VB.NET 75 Das ListView-Steuerelement dient ebenso wie die ListBox dazu, auswählbare Listen darzustellen. Im Gegensatz zur ListBox kann das ListView-Steuerelement jedoch auch mehrspaltige Listen anzeigen und verwalten. Das Einfügen von Daten in ein ListView-Objekt kann wahlweise in der Entwicklungsumgebung oder per Code erfolgen. Initialisierung in der Entwicklungsumgebung: In der Entwicklungsumgebung von VB.NET kann man mit einem Dialog für die Columns-Eigenschaft die Spalten für das ListView-Steuerelement de- finieren (Beschriftung, Ausrichtung, Breite). Vgl. Kofler, VB.NET, S. 628ff. Das ListView-Steuerelement (I)

77 Einführung in die Programmierung mit VB.NET 76 Die Items-Eigenschaft des ListView-Objektes verweist auf die einzelnen Listen- einträge. Enthält das ListView-Objekt mehrspaltige Einträge, so verweist die SubItems-Eigenschaft eines ListViewItems auf die verschiedenen Spalten. Sowohl die Items- als auch die SubItems-Eigenschaft sind indexiert, wobei der Index jeweils mit Null beginnt. Erzeugen eines neuen Items: Dim LVItem As ListViewItem LVItem = ListView.Items.Add("Listeneintrag") Erzeugen eines neuen SubItems innerhalb eines bestehenden Items: LVItem.SubItems.Add("SubListeneintrag") Mit Clear können evtl. vorhandene Spalten bzw. Listeneinträge gelöscht werden: ListView.Columns.Clear() bzw. ListView.Items.Clear() Der Datenzugriff auf ein Datenelement erfolgt in der Form: ListView.Items(Index).SubItems(Index).Text Das ListView-Steuerelement (II)

78 Einführung in die Programmierung mit VB.NET 77 Aufgabe 17) Erweitern Sie das Programm aus Aufgabe 16), indem Sie eine Form Rechnung erstellen, die über den Menüpunkt "Aktion/Geschäft" aufgerufen wird. Beim Aufruf der Form soll zunächst die größte Rechnungsnummer aus der Tabelle tabUmsatz bestimmt und um Eins als neue Rechnungsnummer hochgezählt werden. Nach der Auswahl eines Kunden in einer ComboBox sollen schließlich die bestellten Artikel ebenfalls in einer ComboBox selektiert und deren Anzahl eingegeben werden. Nach der jeweiligen Eingabe sollen die Daten mit dem Übernehmen-Button in ein ListView-Objekt überführt und der Gesamtbetrag pro Artikel berechnet werden. Der Berech- nen-Button dient schließlich der Berech- nung der Mehrwertsteuer und des Rechnungsbetrages auf der Basis des ListView-Objektes und der Speichern- Button der Speicherung der Daten in der Tabelle tabUmsatz. >>>> Faktur5

79 Einführung in die Programmierung mit VB.NET 78 Man kann in VB.NET auch die Programmbibliotheken anderer Applikationen, z.B. die von Word oder Excel, verwenden. Dazu muss zunächst ein Verweis auf die entsprechende Programmbibliothek eingefügt werden. Zum Einfügen eines Verweises auf die Word-Bibliothek geht man folgendermaßen vor: -im Menü "Projekt/Verweis hinzufügen..." anklicken -Registerblatt "Com" wählen -aus der angezeigten Liste "Microsoft Word x.0 Object Library" selektieren und den Button "Auswählen" anklicken Danach kann man die eingebundene Bibliothek z.B. dazu nutzen, um eigene Klassen zu entwickeln, mit denen man Word von VB.NET aus nutzen und steuern kann. Vgl. Martin, Kapitel 4 & 8 Zugriff auf andere Programme: Word (I)

80 Einführung in die Programmierung mit VB.NET 79 Die Klasse clsWord ist eine selbstprogrammierte Klasse, die Methoden zum "Fernbedienen" von Word aus VB.NET heraus bereitstellt. Um die Klasse nutzen zu können, muss wie zuvor beschrieben ein Verweis auf die Word- Programmbibliothek eingerichtet werden und dem Projekt die Datei clsWord.vb hinzugefügt werden (Menü "Projekt/Vorhandenes Element hinzufügen...") Zugriff auf andere Programme: Word (II) Danach kann man - wie aus dem Screenshot ersichtlich - die Methoden von clsWord in den anderen Projektbestandteilen benutzen, nachdem man dort ein Objekt der Klasse instanziert hat.

81 Einführung in die Programmierung mit VB.NET 80 Wichtige Methoden der Klasse clsWord: -Dateizugriff (Vorlagenname As String) Öffnet ein neues Word-Dokument basierend auf der angegebenen Word- Vorlage. -TextmarkeFüllen (Marke As String, Text As String) Füllt die in Text übergebene Zeichenkette, in die mit Marke bezeichnete Textmarke eines Word-Dokumentes ein. -GeheZuTextmarke (Marke As String) Springt zu der mit Marke bezeichneten Textmarke eines Word-Dokumentes. -SchreibeText(Text As String) Schreibt die in Text übergebene Zeichenkette in ein Word-Dokument. -NeueZeile Erzeugt einen Zeilenumbruch in einem Word-Dokument. Zugriff auf andere Programme: Word (III)

82 Einführung in die Programmierung mit VB.NET 81 Aufgabe 18) Erweitern Sie das Programm aus Aufgabe 17), indem Sie der Form Rechnung einen Drucken-Button hinzufügen. Durch Anklicken des Buttons sollen die angezeigten Rechnungsdaten an ein neu zu erzeugendes Word-Dokument übergeben werden, das man dann bequem ausdrucken kann. Kopieren Sie zunächst die Dateien "clsWord.vb" und "Rechnung.dot" auf Ihre lokale Festplatte. "clsWord.vb" enthält die Klasse clsWord und deren Methoden zum Nutzen und Steuern von Word. "Rechnung.dot" ist eine Word-Dokument- vorlage für eine Rechnung, in der folgende Textmarken definiert sind: >>>> Faktur6

83 Einführung in die Programmierung mit VB.NET 82 VB.NET ermöglicht als objektorientierte Programmiersprache nicht nur die Nutzung bereits vorhandener Klassen, sondern bietet auch die Möglichkeit eigene Klassen zu programmieren. Klassen bieten die Grundlage für eine umfangreiche Wiederverwendung von Code. Statt ein immer wiederkehrendes Problem immer wieder neu zu lösen, kann man für dieses eine Klasse entwickeln und diese dann in verschiedenen Projekten entweder als Code (durch simples Einfügen) oder als Bibliothek (durch eine Referenz) nutzen. Eine Klasse ist die abstrakte Beschreibung (der Bauplan) eines objektorientierten Datentyps. Die Schnittstelle nach außen (also zur Anwendung der Klasse) wird in erster Linie durch Eigenschaften und Methoden hergestellt. Vgl. Kofler, VB.NET, S. 217ff. Eigene Klassen (I)

84 Einführung in die Programmierung mit VB.NET 83 Auf der Codeebene wird die Definition einer Klasse durch Class name eingeleitet und durch End Class abgeschlossen. Innerhalb dieses Blocks werden die Elemente der Klasse definiert - also Variablen, Prozeduren (alias Methoden), Eigenschaften usw. Allgemeine Struktur: Class Klassenname Private x As Datentyp'interne Klassenvariable Public y As Datentyp'öffentliche Klassenvariable Private Sub p()...'interne Prozedur Sub m()....'von außen zugängliche Methode Property e() As Datentyp'von außen zugängliche Eigenschaft End Class Entscheidend bei Entwurf einer Klasse ist die Überlegung, welche Elemente der Klasse nur für die interne Programmierung innerhalb der Klasse gedacht sind und welche Elemente extern zur Verfügung stehen sollen. Eigene Klassen (II)

85 Einführung in die Programmierung mit VB.NET 84 Aufgabe 19) Modifizieren Sie das Programm aus Aufgabe 9), indem Sie die Plausibilitätsprüfung nicht mehr als Prozedur innerhalb eines Formulars deklarieren, sondern als Methode innerhalb einer Klasse. >>>> Bestellmenge2

86 Einführung in die Programmierung mit VB.NET ab cd 12 34 x a * 1 b * 3 + ab cd 12 34 a * 1 b * 3 + a * 2 b * 4 + ab cd 12 34 a * 1 b * 3 + a * 2 b * 4 + c * 1 d * 3 + ab cd 12 34 a * 1 b * 3 + a * 2 b * 4 + c * 1 d *3 + c * 2 d * 4 + 85


Herunterladen ppt "Einführung in die Programmierung mit VB.NET Einführung in die Programmierung mit Visual Basic.NET Dipl.-Kfm. Lars Burmester WS 2006/2007."

Ähnliche Präsentationen


Google-Anzeigen