2000-12-04

 

Visual Basic 6.0

 

 

Literatur:

Stahlknecht/Hasenkamp

„Einführung in die Wirtschaftsinformatik“

Springer Verlag

ISBN 3-540-65764-9

Visual Basic 6.0

 

·        VB 6.0: Programmier- und Entwicklungsumgebung

·        VBA: Visual Basic für Applikationen in Office

·        VB Skript: Bestandteil von Windows

o       Windows Scripting Host

o       Internet Explorer

o       Active Server Pages

 

 

Programmiergrundlagen

 

Prinzip: EVA (Eingabe – Verarbeitung – Ausgabe)

 

 

Phasen der Systementwicklung

 

Vorphase

Projektbegründung

 

Analyse

Ist-Analyse

Soll-Konzeption

 

Entwurf

Systementwurf

Programmspezifikation

Programmentwurf

 

Realisierung

Programmierung

Test

 

Einführung

Systemfreigabe

Systemeinführung

-                     wird nicht geprüft

#                irrelevant

 

B = Bedingung

A = Aktion

R = Regel

 

 

Entscheidungstabelle:

 

 

Prüfen, ob Entscheidungstabelle

·        redundanzfrei

·        wiederspruchsfrei

·        vollständig

 

 

Aufgabe 2.1:

 

 

Aufgabe 3.1

 

 

Aufgabe 3.4

 

 


Programmablaufplan

 

 


Beispiele:

 


 

 

Struktogramm

 

 

Beispiele:

 

 

Einige Grundbegriffe

 

Bezeichner

·        Namen für Variablen, Konstanten, Objekte, Prozeduren, Funktionen, Module, ...

·        Buchstaben und Zahlen, keine Sonderzeichen

 

A, K237, MeineVariableZumRechnen, MachWas, ...

 

Operatoren

+ - * /

AND OR NOT

\ (ganzzahlige Division)

mod (Rest der Division)

 

z.B. 371 min in h:min umrechnen:

A Stunden  B Minuten

 

A=X\60

B=X mod 60

 

^ (hoch)

& (Textverkettung)

= (Vergleichsoperator und Zuweisungsoperator)

 

X=4                als Bedingung

Let X=4          als Befehl-Anweisung

 

Ausdrücke

Verbindungen von Bezeichnern und Operatoren

 

A+27

A^B+3*C

NOT X

Grundstrukturen der Programmierung

siehe

Erste.vbs

 

Verzweigung.vbs

IF Bedingung THEN

Anweisung

ELSE

Anweisung

END IF

 

Schleife1.vbs

FOR Zähler= Startwert TO Endwert

Anweisungen

NEXT

 

Schleife4.vbs

DO WHILE Bedingung

Anweisungen

LOOP

 

Verzweigung2.vbs

SELECT CASE Ausdruck

CASE Testausdruck

Anweisung

CASE Testausdruck

Anweisungen

...

CASE ELSE

Anweisungen

END SELECT

 

 


Bemerkungen zum Speichern

1.      Ordner D:\VBProjekte

2.      Jedes Programmprojekt erhält einen eigenen Unterordner

·        die Projektdatei *.vbp

o       zugehörige Module, Steuerelemente, Bibliotheken

·        die Formulare (Formen) *.frm

·        allgemeine Module *.bas

·        *.cls (Klassenmodule

·        *.frx (Ressourcen zu Formen)

·        *.vbw (Fenstereinstellungen zum Projekt)

·        *.log (Fehlermeldungen)

 

Starte nie eine *.frm per Doppelklick im Explorer!

(nur die *.vbp)

 

 


2000-12-05

 

Visual Basic

 

 

Der Startbildschirm von Visual Basic 6.0

 

 

 

Die Entwicklungsumgebung (IDE)

 

Rechteckige Legende: Formular-Designer

Projekt Explorer

 

Option Explicit erzwingen

®nur definierte Variablen zulassen

 

Extras ®Optionen ®Editor ®Variablendeklaration erforderlich

 

Þgilt ab jetzt Þfür neue Projekte

 

 

Speichern

 

 

 

Ein Programm erzeugen

 

 

Namen in VB

 

Projekt

 

VB-interner Objektname (Projekt1)           Betriebssystem-Namen (DasErste.vbp)

 

Form (Form1)                                       Form1.frm

 

Command Button (Command1)                /

 

·        Objektname des Projektes kann in VB verändert werden

·        DOS-Name des Projektes kann im Explorer verändert werden

 

·        Objektname der Form kann in VB verändert werden

·        DOS-Name der Form darf nicht einfach im Explorer geändert werden – auch der Pfad nicht

o       Speichern unter... verwenden – aber: das doppelte Objekt muß von Hand gelöscht werden

o       Projektexplorer:

§         RMT auf Form1 (Entfernen von...)

§         Im Windows Explorer Form1.frm verschieben oder umbenennen

§         VB Projekt ®Datei hinzufügen

§         dann Projekt ®Eigenschaften von Projekt1 anpassen

 

 

Ordner Startobjekt

 

Startobjekt kann sein:

·        eine Form

·        eine Prozedur (Sub) mit dem Namen Main, die in einem Modul liegt

 

 


Regeln für den Beginn neuer Projekte

 

1.      Ordner erstellen (in \...\VBProjekte\Beispiel)

2.      VB starten – Standard EXE

3.      Projekt1 einen neuen Objektnamen geben (Testprojekt)

4.      Form1 einen neuen Namen geben (frmHauptfenster)

5.      Speichern, dabei auf Ordner achten

 

 

DasErste.vbp

 

 

Das Codefenster

Menü Ansicht ®Code   oder   <F7> 

 

Codefenster in „Vollständige Modularansicht“

 

Rechteckige Legende: Prozeduransicht

 

 

Was passiert, wenn das Objekt Command1 umbenannt wird? (z.B. cmd1)

 

Programmcode ist nicht mehr mit dem Button verbunden; es gibt eine leere Routine cmd1_Click() und im allgemeinen Formteil eine nicht benutzte command1_Click().

 

Rechteckige Legende: Prozedur-Rahmen
 


nicht benötigte Prozedurrahmen können gelöscht werden (aber vollständig!)

 

 


Regel: Zuerst Objektnamen vergeben, dann Programmcode eingeben.

 

 

 

 

Rechteckige Legende: Menü-InschriftEin Menü zum Beenden des Programmes

·        Form-Ansicht (nicht Code)

·        Extras ®Menüeditor

Rechteckige Legende: Objektname

Menüstruktur:

 

Name

Caption

mnuDatei

&Datei

mnuOeffnen

Öffn&en

mnuSchliessen

&Schließen

mnuStrich

-

mnuEnde

&Beenden

mnuExtras

&Extras

mnuOptionen

&Optionen

mnuEinstellungen

&Einstellungen

mnuSpezial

Spe&zial

 

Das Ergebnis:

 

Code für mnuEnde:

 

Code zum Beenden von Windows

 

 

Eigene Prozeduren

Programm-Teile, die von anderen Teilen genutzt werden können.

 

1.      Hinzufügen

Bei Codefenster:

Menü Extras ®Prozedur hinzufügen

 

 

2.      Benutzen

 

z.B.

mnuSpezial

call RufMichAuf

 

 

Nun kann diese Prozedur beliebig oft aufgerufen werden:

 

Unterschiede

allgemeine Prozedur

Ereignisprozedur

RufMichAuf

mnuEnde_Click

muß aufgerufen werden

ist an ein bestimmtes Ereignis (Click) eines bestimmten Objektes (mnuEnde) gebunden

 

 

Das Projekt „First“

·        Ordner First erstellen

·        Neues Projekt

o       Projektname First

o       Formname frmHauptfenster

·        Speichen

 

Etwas Theorie

Objekte (also auch Steuerelemente) haben Eigenschaften, die man abfragen und (meist) auch neu belegen kann.

 

Syntax Eigenschaft festlegen

 

Objektname.Eigenschaft=Wert

 

z.B. in Form-Load

 

‘Titelzeile der Form festlegen

Me.Caption=“Mein erstes richtiges Programm“

 

 

 

Projekt First

cmdAnzeige

 

 


Zusatzfeature:

Bei Klick auf Option Button Farbe ändern

 

 

 

 


2000-12-07

 

Visual Basic

 

Projekt Grundlagen

 

Eine Übersicht über die wichtigsten Funktionen

 

 

 

Kontrollstrukturen und Schleifen

 

 

 

Wenn hinter THEN kein Zeilenwechsel erfolgt, gibt es kein END IF!

 

Syntax der InputBox-Funktion

 

InputBox(„Aufforderung“,“Titel“,“Standardinhalt“)

 

 

ÞStandardinhalt der Eingabe: 6

 

 

 

cmdIFLang

cmdIfElseIf

 

®ElseIf ist eine Aneinanderreihung von If...Else

 

 

andere Schreibweise:

 

If I>20 Then

            MsgBox...

Else

            If I>15 Then

                       MsgBox...

            Else

                       If I>10 Then

                                   MsgBox...

                       Else

                                   MsgBox „nichts“

                       End If

            End If

End If

 


cmdSelectCase1

 

 

 

cmdSelectCase2

 

 

cmdSelectCase3

 

 


Groß/Kleinschreibung ignorieren:

 

Option Compare Text

 

in den allgemeinen Teil:

 

cmdForNext1

 

 

 

 

 

 

 

S=       S&      CStr(I)&         vbCrLf

Neues S

            altes S

                        momentanes I als Text

                                               Zeilenwechsel

 

cmdForNext2

Fakultät einer Zahl K!

®Soll mit For-Next-Schleife berechnet werden

 

 

cmdDoLoop1

 


DO [WHILE Bedingung|UNTIL Bedingung]

            Anweisungen                                                 kopfgesteuert

LOOP

 


DO

            Anweisungen                                                      fußgesteuert

LOOP [WHILE Bedingung|UNTIL Bedingung]

 

·        fußgesteuerte Schleifen werden immer mindestens einmal ausgeführt

 

Beispiele:

 

cmdDoLoop2

 

cmdForEachNext

For...each...next Schleifen

betrifft Auflistungen von Objekten

 

Controls -       alle Steuerelemente der Form

Forms -          alle geöffneten Fenster des Programms

 

weitere später

Controls: Control (0), Control (1)

 

 

 

cmdForEachTypeOf

Sonderfall der If...

 

If TypeOf Objektname Is Objekttyp Then...

 

 

 

 

 

 

 

 

 

frmSpass

frmSpass.frm und frmSpass.frx

·        in Ordner Grundlagen kopieren

·        Projekt ®Datei hinzufüren

 

 

CmdSpass

 

 

 


2000-12-08

 

Visual Basic

 

Beispiel: Übung von gestern

txt1 = ““

txt2 = ““

 

Alternative:

Dim X as Control

For Each X in Controls

            If TypeOf X Is Textbox Then

                        X.Text = “”

            End If

Next

 

frmSpass

·        frm-Datei und frx-Datei in den Ordner des Projektes kopieren

·        dann frm-Datei dem Projekt hinzufügen

 

Timer

timZeit

·        Eigenschaften: Enabled (True/False)

·        Interval: Zahle zwischen 0 und 65535 in ms

·        löst das Ereignis timZeit_Timer() aus (wenn enabled!)

 

Zufallsfunktion RND() ®Randomize

Zahl zwischen 0 und1

 

X = RND()*48 + 1 (zur Ziehung der Lottozahlen)

 

 

 

 

 

 

 

 

 

 

 

 

 

 


timChaos_Timer()

 

 

 

Projekt UebungA

 

Preisberechnung von Eintrittskarten: Zwischen 5 und 100 Personen gilt als Gruppe. In der Gruppe erhält jeder zehnte eine Freikarte, die anderen zahlen den halben Preis.

 

Struktogramm:

 

 

Alternative auf cmdRechne2

Deklaration von Variablen

 

Dim-Anweisung

·        in der Prozedur

·        Dim X As Integer

·        Variable gilt nur in dieser Prozedur

 

Private-Anweisung

·        im allgemeinen Teil einer Form/eines Moduls

·        Private Y As String

·        Variable gilt in allen Prozeduren dieses Modules

·        (statt Private kann auch Dim genommen werden – aus Kompatibilitätsgründen)

 

Public-Anweisung

·        im allgemeinen Teil einer form/eines Modules

·        Public Z As Long

·        Variable gilt in allen Modulen dieses Projektes

 

 

Projekt Grundlagen

Projekt ®Modul hinzufügen ModulA und ModulB

frmDeklarationen hinzufügen

 

Wurde eine Variable in zwei oder mehreren Moduln deklariert, muß genannt werden, muß das entsprechende Modul genannt werden:

 

 

 

MCI-Programmierung

Media Control Interface

Projekt ®Komponenten

Anklicken: Microsoft Multimedia Control 6.0 (SP3)

Formular erstellen:

 

 


2000-12-11

 

Visual Basic 6.0

 

 

Projekt UebungB:

 

Der Anwender gibt eine Zahl von Minuten ein (z.B. 183). Die Minuten sollen in volle Stunden und Minuten aufgeschlüsselt werden (z.B. 3h 3min). Die Ausgabe kann in Textfeldern erfolgen.

 

a)     Struktogramm (oder PAP)

 

 

 

 

 

 

 

 

 

 


b)     Code in VB

 

 

 

Projekt Grundlagen frmDatentypen

 

Arbeit mit der Variablen A

·        im allgemeinen Formteil steht Private A; d.h.

o       A gilt in allen Prozeduren dieses Formulares

o       A hat den Datentyp Variant

cmdEingabeA liest A ein A=txtEingabeA

cmdTypVon1 meldet aktuellen Datentyp von A; MsgBox TypeName(A)

 

Die Fehlerbehandlung

Laufzeitfehler ®Programmabsturz

 

Lösungen:

·        in jede Prozedur: On Error Resume Next (bei Fehler nimm nächste Anweisung)

·        in jede Prozedur

 


On Error Goto Sprungmarkenname

...

Exit Sub (damit nicht bei Fehlerfreiheit Fehler „0“ erscheint)

Sprungmarkenname

MsgBox „Fehler“ & vbCrLf _

& CStr(Err.Number) & „-„ & Err.Description

End Sub

 

 

Die DefType-Anweisung

·        gestattet uns Buchstabenbereiche für Datentypen vorzudefinieren; z.B. alle Variablen, die mit X beginne,n werden Integer usw.

·        DefType-Anweisungen müssen vor jeder anderen Deklaration stehen

 

Option Explicit

DefInt X ‚alles, was mit X beginnt, ist Integer

...

 

Benutzerdefinierte Datentypen

·        aus den VB-Typen zusammengesetzte Datentypen

·        eingesetzt, um Daten aus Dateien zu lesen und auszuwerten; z.B. Adressdaten

 

Name

Vorname

eine Nummer

Geburtsdatum

 

Type-Anweisung

Private (oder Public) Type Name des Types

            Elementname as Datentyp

            ...

            Elementname as Datentyp

End Type

 

 

...

 

cmdPersonAEingabe

 

 

alternativ:

 

cmdPersonAAusgabe

 

 

cmdTexteLeer

 

cmdFahrzeugXEingabe

Vorbereitung:

...

 

 

frmProzedurenFunktionen

 

Prozeduren

Private (oder Public) Sub Prozedurname (Argumente)

            Befehle

End Sub

 

 

Einfügen einer eigenen Prozedur

Extras ®Prozedur hinzufügen

 

 

wird aufgerufen durch cmdProzedur1:

 

 

Call muß nicht immer geschrieben werden; nur bei mehreren Aufrufen in einer Zeile

 

 

Prozeduren mit Parameterübergabe

Extras ®Prozedur hinzufügen

 

 

cmdProzedur3

 

 

 

 

 

 

MyProcedure4

cmdProzedur4a

 

cmdProzedur4b

 

cmdProzedur4c

 

 

Optionale Argumente

·        Argumente, die man eingeben kann, nicht muß

 

z.B.

MsgBox „Soll ich?“

MsgBox „Soll ich?“, 4 + 32

MsgBox „Soll ich?“, 4 + 32, „Oben“

MsgBox „Soll ich?“, , „oben“

X = InputBox („Gib X“, , „27.48“)

 

 

 

cmdProzedur5 (a, b, c)

 

 


2000-12-12

 

Visual Basic 6.0

 

 

Prozedur

 

·        Ansammlung von Anweisungen; über ihren Namen aufrufbar

·        Ereignisprozeduren werden von Ereignissen aufgerufen (Form_Load, cmdX_Click, ...)

·        „normale“ Prozeduren werden mit Call (in bestimmten Fällen ohne) im Programm aufgerufen

·        Syntax:

 

Public Sub Name ()

End Sub

 

·        Wenn in der Klammer Variablennamen stehen, erwartet die Prozedur Argumente (Parameter); Beispiel:

 

Private Sub Dienstag (Morgens As String)

Rechteckige Legende: VariableMe.Caption = Morgens

End Sub

Rechteckige Legende: InhaltCall Dienstag („Das Argument“)

 

·        Wenn vor einem Variablennamen das Wort Optional steht, kann das Argument angegeben werden, muß aber nicht

 

Public Sub Multipliziere (X, Y, Optional Z)

If IsMissing (Z) Then Z = 1

txt1.Text = CStr (X * Y * Z)

End Sub

 

aufrufen mit Multipliziere 2,3,2 oder Call Multipliziere (2,3,2)

 

 

Prozeduren in Moduln

 

·        stehen allen Formen des Projektes zur Verfügung (falls sie Public sind)

·        bei Prozeduren gleichen Namens in verschiedenen Moduln muß der Modulnamen vor der Prozedur stehen (Modul378.MachEndlich)

 

im ModulA

Extras ®Prozedur hinzufügen

MyProcedure6a und 6b

 

 

Prozeduren und die übergebenen Argumente

 

·        unsere Variablen AF, BF, CF sind im Hauptspeicher

 

 

frmProzedurenFunktionen ®cmdProzedur6..., 7...

 

 

Das Schlüsselwort ParamArray

·        gestattet Prozeduren, mit beliebig vielen optionalen Argumenten zu arbeiten, ohne für jede Variable eine IsMissing-Frage zu stellen

 

Extras ®Prozedur hinzufügen

 

cmdProzedur8...

 

 

Statische Variablen

Static X As Integer

·        behält ihren Wert auch beim Neu-Eintritt in die Prozedur

 

 

 

Þjede Variable in dieser Sub ist statisch! (gefährlich)

 

Beispiel für statische Variablen:

·        Passwort-Abfrage, die nur 3 Fehlversuche erlaubt

 

 


cmdPasswort

 

 

Funktionen

·        auch Function-Prozeduren genannt

·        kann einen Wert zurückliefern und damit auf der rechten Seite einer Wertzuweisung stehen

 

Beispiel: Funktion Now():

 

X = MsgBox („Soll ich?“,vbYesNo)

Me.Caption = Now()

 

·        Funktionen können Argumente haben (auch optionale), müssen aber nicht

·        vorzeitiges Verlassen einer Function-Prozedur mit

 

EXIT FUNCTION

 

·        Beispi Funktionsname muß im Code vorkommen, um den Rückgabewert zu bilden

·        Funktionen gestatten uns, ohne öffentliche Variablen auszukommen

 

1. Beispiel

Mathematische Grundlage: Der Satz des Pythagoras

 

 

 

 

 

Code ohne öffentliche Variablen:

 

 

 

2. Beispiel:

Die Funktion Fakultät

 

 

 

 


Zahlenformate:

Beispiel:

MsgBox Format (Variable,“####0,000“)

 

®zeige bis zu 5 Stellen vor dem Komma, drei nach dem Komma

 

 

Zinsberechnung:

 

Zinswert =  

Z =

 

K =

 

p =

 

t =

 

 

 

 

Projekt Quader

 

 


2000-12-13

 

Visual Basic 6.0

 

 

Projekt ToolBox

Verbinden von drv1, dir1 und fil1 (drv1 doppelklicken ®drv1-change)

 

 

 

 

 

Þin der PictureBox wird das Bild der PictureBox angepasst, das Image passt seine Größe dem Bild an

 

frmTextBox

3 Einträge in das Eigenschaftsfenster für txt1:

·        Multiline:              True

·        ScrollBars:          3 (beide Scrolls)

·        Hide Selection:   False

 

 

 

 


Ausgewählte Eigenschaften der TextBar

Font Bold (Fett)      ®chkFett_Click

Font Italian(Kursiv)  ®chkKursiv_Click

 

Alignment (Testausrichtung)

0                    links

1                    rechts

2                    zentriert

 

 

Locked (gesperrt)

chkLock

 

Password Char

ein String

 

*       führt zur Anzeige ****

„a“       führt zur Anzeige aaaa

„“         Klartext

 

MaxLength (Längenbegrenzung der Eingabe)

X = Anzahl

0 = keine Begrenzung

 

 

SelText (der markierte Text)

 

 

 

SelStart (Beginn der Auswahl)

 

SelLength (Länge der Auswahl)

 

 

 

 

cmdMarkiere

 

 

 

 

 


cmdErsetze

 

 

 

 

frmOptionen

 

 

Zur Theorie:

OptionButton.Value = True/False

CheckBox.Value = 0/1/2

Timer.Interval = … in ms

         .Enabled = True/False

 

Wenn ein Timer enabled ist, wird seine  _Timer()-Routine jedesmal nach Ablauf von Interval ausgelöst.

frmMenu

 

 


2000-12-14

 

Visual Basic 6.0

 

weiter im Projekt ToolBox

 

frmListBox

ListBox und ComboBox

 

 

Die Listbox

Eigenschaften:

ListCount                   Anzahl Elemente

Text                            ein ausgewähltes Element

ListIndex                    Nummer des aktuellen Elementes

Selected                    Angabe, ob Element markiert ist

MultiSelect                Mehrfachauswahl (0, 1, 2)

 

Methoden:

AddItem                     Element dazu

Clear                          leeren

RemoveItem              Element entfernen

 

 

cmdListeHinzu

 


cmdListeHinzu2

 

cmdListeZählen

 

cmdListeLeer

 

cmdSchriften

 

cmdDrucker

 

 


Eigenschaft MultiSelect

·        kann nur im Entwurf-Modus gesetzt werden

0 – keine Mehrfachauswahl

1 – Auswahl und Abwahl durch Anklicken/Leertaste

2 – Auswahl mit Maus, <Strg> + <Shift> werden ausgewertet

 

cmdListeWeg

 

cmdListeWeg2

 

cmdKombiHinzu

 

cmdKombiZählen

 

cmdKombiLeer

 

cmdKombiWeg

 

 

frmScrollBars

 

 

Eigenschaften:

Min

Max

Value

SmallChange

Wertänderung bei Klick auf

LargeChange

Wertänderung bei Klick auf

 

Startbedingungen definieren:


cmdFarbe

 

 

 

Voreinstellungen für hsbInterval und hsbSchrift:

tim1_Timer

 

hsbInterval_Change

 

hsbSchrift

 

Farbwert berechnen

Farbwert = txtFarbe.BackColor

Blauwert = Farbwert \ 65536

Farbe ohne Blau = Farbwert mod 65536

Grünwert = Farbe ohne Blau \ 256

Farbe ohne Grün = Farbe ohne Blau mod 256

Rotwert = Farbe ohne Grün mod 256

 

Siehe Toolbox (frmScrollBars)

 

 

Projekt Uebung02a

 

 


2000-12-15

 

 

Visual Basic 6.0

 

 

Uebung04a

1.      Legen Sie ein Projekt Uebung04a.vbp in einem entsprechenden Ordner an.

2.      Legen Sie ein Listenfeld, ein Textfeld und einen Befehlsschalter an, der den Inhalt des Textfeldes als neues Element in das Listenfeld schreibt. (Listenfeld.Eigenschaft Multiselect = 0)

3.      Legen Sie ein Kontrollkästchen an, das festlegt, ob Elemente aus dem Listenfeld gelöscht werden dürfen – oder nicht.

4.      Legen Sie einen Schalter an, der das markierte Element aus dem Listefeld löscht, falls es erlaubt wurde.

 

Zusatz: Setzen Sie eigene Ideen zu den Themen ListBox, CheckBox, OptionButton, KomboBox und ScrollBar um.

 

 

 

 


2000-12-18

 

Visual Basic 6.0

 

 

frmDialoge

 

Arbeit mit Windows-Standarddialog

 


·        Datei ®Öffnen                         (Dialog liefert einen Dateipfad;

·        Datei ®Speichern unter       hat nichts mit Öffnen oder Speichern zu tun)

·        Farbe (liefert eine Farbnummer, die man benutzen kann

·        Schrift (liefert eine Schriftart, -größe, usw.)

·        Druckerauswahl (kann Standarddrucker festlegen)

 

Voraussetzung:

·        Dialog muß zur Toolbox hinzugefügt werden

 

Projekt ®Komponenten

 

 

 

Mängel:

·        man kann eine ungültigen Dateinamen angeben z.B. C:\Blödsinn.txt

·        bei Abbrechen wird der zuletzt genommene Name behalten

 

 

 

bei „Abbrechen“:

 

bei Auswahl:

 


Speichern:

cmdFarbe


Drucker

 

Flags

Tip:

Ich möchte cdlPDReturnDC nicht eintippen, sondern aus der Hilfe kopieren

 

dlg1 (Entwurfsansicht der Form) markieren, <F1> ®Eigenschaften

auswählen (Doppelklick)

auf cdlPDReturnDC doppelklicken, kopieren, einfügen

 

 

 

 

 

Übung PicView

Entwerfen Sie ein Programm PicView mit folgenden Funktionen

·        Datei öffnen, Speichern unter per Common Dialog

·        Datei schließen

Zusatzideen:

·        Anzeige in PIC und/oder IMG (siehe BildView)

·        Drucken mit der PaintPicture-Methode des Objektes Printer (F1)

 

Standarddialog – Die Eigenschaft Flags

 

Datei – Dialog

‚Rückfrage bei vorhandenen Dateinamen

dlgDialog.Flags = cdlOFNOverwritePrompt

 

‚zu öffnende Datei muß existieren

dlgDialog.Flags = cdlOFNFileMistExist

 

Farbe – Dialog

‚Farben definieren gleich mit anzeigen

dlgDialog.Flags = cdlCCFullOpen

 

‚Farben definieren verbieten

dlgDialog.Flags = cdlCCPreventFullOpen

 

Schrift – Dialog

‚Schriftarten und erweiterte Einstellungen

dlgDialog.Flags = cdlCFBoth Or cdlCFEffects

‘Min und Max für Größe:

cdlCFLimitSize

 

Drucker – Dialog

‚Gerätenummer (und Name des Standarddruckers zurückgeben)

dlgDialog.Flags = cdlPDReturnDC Or cdlPDReturnDefault

 

 


2000-12-19

 

Visual Basic 6.0

 

 

Uebung07a

1.      Legen Sie ein Projekt Uebung07a.vbp in einem entsprechenden Ordner an.

2.      Legen Sie einen großen Befehlsschalter sowie zwei Scrollbars an. Bei Änderung der Value-Eigenschaft der ScrollBars sollen die Eigenschaften Height und Width des Befehlsschalters die Werte annehmen, die im entsprechenden Scrollbalken eingestellt wurden und außerdem die Zahlenwerte auf eine geeignete Weise angezeigt werden. Wählen Sie sinnvolle Intervalle für Min und Max der Scrollbalken, sowie für LargeChange und SmallChange.

3.      Fügen Sie einen CommonDialog und eine TextBox hinzu.

4.      Fügen Sie einen Schalter hinzu, der den CommonDialog als Datei-Öffnen Fenster anzeigt und den ausgewählten vollständigen Dateinamen in der TextBox anzeigt.

5.      Fügen Sie einen Rahmen mit 3 OptionButton und einen Befehlsschalter ein. Die OptionButton sollen eine Auswahl Farbe-Schrift-Drucker gestatten und bei Klick auf cmdAg5 soll ein entsprechender CommonDialog erscheinen, der Grundlage für folgende Aktion ist:

·        Hintergrundfarbe der Form ändern

·        Schriftart und –größe von cmdAg5 ändern

·        Name des gewählten Druckers als Caption der Form zeigen

6.      Fügen Sie ein Textfeld ein. In dem Textfeld soll man Zeichen eingeben. Sobald die Buchstaben ein von Ihnen festgelegtes (und sehr geheimes) Wort ergeben, soll das Textfeld gesperrt werden und die Darstellung des Textes durch verschlüsselte Zeichen (PasswordChar) erfolgen. Nutzen Sie dazu das Change-Ereignis der TextBox.

7.      Das „Freischalten“ des Textfeldes (d.h. Leeren und Umschalten auf Klartextanzeige) nach erfolgreicher Passworteingabe soll durch Doppelklick in der Form ermöglicht werden.

Zusatz: Erweitern Sie das Programm so, dass bei Ag6 drei geheime Wörter mögliche Lösungen sind.

8.      Fügen Sie einen Befehlsschalter cmdAg8 ein. Beim Versuch, diesen anzuklicken, soll der Schalter einfach „wegwandern“.

9.      Zu Ag6 ein PAP oder Struktogramm

 

 

 

 

Struktogramm zu 6.:

 

 

 

 

 


txt2.Text

 

 

                        „passwocht“ or „tim“ or „struppi“                                  Else

 

 

 

 

 

 

 


Steuerementfelder

·        Anzahl von Steuerelementen, die den gleichen Namen haben und sich im Index unterscheiden

·        Steuerelementfeld anlegen:

a)     Kopieren und Einfügen, dabei Frage nach Steuerelementfeld mit „Ja“ beantworten

b)     Eigenschaft Index eines vorhandenen Steuerelementes mit einer Zahl belegen

c)      ein Steuerelement umbenennen, dabei den Namen eines schon vorhandenen Steuerelementes vergeben

·        Steuerelementfeld in einfache Steuerelemente zurückführen

a)     alle Elemente umbennen

b)     Index aller Elemente löschen

 

 

 


frmSteuerelemente

 

 

 

Übung:

Legen Sie eine Kopie des Projektes MsgBox.vbp an und tauschen Sie in der Kopie die OptionButton für Icon und Typ gegen zwei Steuerelementfelder.

 

 


2000-12-20

 

Visual Basic 6.0

 

Zusatzsteuerelemente (Custom Controls)

·        neuer Ordner Controls

·        neues Projekt mit frmControls

 

·        einige Controls zur ToolBox hinzufügen

 

Projekt ®Komponenten ®Microsoft Windows Common Controls 6.0

                                               Microsoft Windows Common Controls 2 6.0

 

Schieberegler (Slider)

frmSlider

 

Eigenschaften:

TickStyle:

·        Anordnung der Teilstriche

·        0...3

 

Min, Max, Value ,SmallChange, LargeChange wie bei ScrollBars

 

Orientation

0 waagerecht

1 senkrecht

 

TickFrequency

Teilstrichintervall

 

Select Range

·        True/False

·        legt fest, ob ein Bereich markiert sein kann

·        SelStart/SelLength zum Markieren dieses Bereichs

 

Methoden

ClearSel

löscht die Selektion

 

GetNumTicks

ermittelt Anzahl der Teilstriche

 

 

Eine Auswahl weiterer Steuerelemente (frmWeitere)

 

Fortschrittsanzeige (ProgressBar)

pb1, cmdGo, tim1 in Form_Load ()

 


Statuszeile (StatusBar)

sb1 Eigenschaften ®benutzerdefiniert ®Grundflächen ®Style ®sbrCaps

 

Þzeigt an, ob die Feststelltaste für Shift (Tastatur) gedrückt ist

 

Kontextmenü zu sb1: Grundflächen hinzufügen

 

Die dritte Grundfläche soll den Fortschritt anzeigen:

 

 

PopUp-Menü

·        Menü mit Untermenüs erstellen (Menü-Editor; <Strg> + <e>)

·        Hauptmenü: Haken bei visible entfernen


·         

·        RMT ruft PopUp-Menü in frmWeiter auf:

 

 

Symbolleiste

ToolBar          tb1

ImageList       imglst1

 

ImageList ®Eigenschaften ®Abbildungen ®Bild einfügen

 

ToolBar ®Eigenschaften ®Allgemein ®ImageList ®(hier:) imgLst1

·        Schaltflächen (-nummer) anwählen und unter Image die Icon-Nummer eintragen

 

 

Soll etwas verändert werden, muß vorher die Auswahl ImageList auf „keine“ gesetzt werde; die Koppelung ToolBox und ImageList wird aufgehoben.


Eigenschaften von Schaltflächen

 

            Beispiel 1                  Beispiel 2                  Beispiel 3

Caption

(nicht üblich)

Key

Ende                          Anders                       Voll

Tooltiptext

Beendet das                         Beendet das             Fenster zum

Programm                 Programm nicht        Vollbild

 

Beendet das Programm

 

 

 

 

 

Das RTF-Text-Steuerelement

frmRTFTextBox

·        Rich Text Format

·        kann

o       Text buchstabenweise formatieren

o       Datei laden

o       Datei speichern

o       suchen nach Text

 

Projekt ®Komponenten ®Microsoft Rich Textbox Control 6.0

 

 

cmdTextAnTextfeld

 


cmdRTFAnTextfeld

 

cmdSelTextSend

 

cmdSelRTFSend

 

 

Eigenschaft FileName von rtf1 kann im Entwurf eingestellt werden; z.B. auf TestText.rtf (Dozent).

®Eingestellte Datei wird in rtf1 angezeigt

 

cmdFarbe

 

Farbe einzelner (oder mehrerer Zeichen) kann verändert werden

 


cmdSchrift

 

 

cmdKopieren

 

 

cmdAusschneiden

 

 

cmdEinfügen

 


cmdFontTest

 

Suchen

Find-Methode des RTF-Textfeldes

 

Syntax:

Objekt.Find(Zeichenfolge, Start, Ende, Optionen)

 

Optionen        2 ganzes Wort

                        4 Groß-/Kleinschreibung beachten

 

Wenn nichts gefunden wird, gibt Find-Methode „-1“ zurück, wenn doch, dann springt FIND-Methode zum gefundenen Text

 

 

Im allgemeinen Formteil:

 

cmdSuchen

 

cmdWeitersuchen

 


2000-12-21

 

Visual Basic 6.0

 

 

Projekt Controls

frmRTFTextBox

 

Objekt.Find(Zeichenfolge[,Start,Ende,Optionen])           ®[optional]

 

Start angegeben    Ende angegeben   Suchbegriff gesucht in

            j                                   j                       Start bis Ende

            j                                   n                      Start bis Ende des Textes

            n                                 j                       aktuelle Position bis Ende

            n                                 n                      Wenn etwas markiert ist die Markierung;

                                                                       wenn nicht: gesamtes Textfeld

 

cmdNeu

 

cmdSpeichern

 


cmdOeffnen

 

 

Bei Änderungen an der Datei soll vor dem Schließen „Speichern?“ gefragt werden:

im allgemeinen Formteil:

Private Geaendert As Boolean

 

in Form_Load()

Geaendert = False

 

rtf1_Change

Geaendert = True

 

cmdDateiOeffnen:

Vor dem Schließen des Formulars:

 

Drucken

RTF-TextBoxen kennen die Methode SelPrint

 

 

 

Übung TextEdit

Mit Hilfe des RTF Text Steuerelementes soll ein einfacher TextEditor für RTF Dateien erstellt werden. Das RTF Textfeld soll etwa die ganze Form ausfüllen (Rand zur Form ca 100 Twips). Bei Größenänderung der Form soll sich die RTF TextBox an die neue Größe anpassen.

 

Die einzelnen Funktionen sollen über Menüs aufrufbar sein:

Datei:            Neu, Öffnen, Speichern,

                                   Speichern unter ...,

                                   Drucken ( eigene Idee gefragt )

                                   Beenden

Bearbeiten:   Kopieren, Ausschneiden,                          

                                   Einfügen,

                                   Suchen, Ersetzen (eigene Idee gefragt),

                                   Weitersuchen

Format:                      Schrift, Textfarbe, Hintergrundfarbe

Hilfe:               InfoBox mit Hinweis auf die                                   

                                   Starprogrammierer dieses Projektes

 

Zusatz-Übung: Aus PicView und TextEdit soll ein universelles Programm erstellt werden. In Abhängigkeit vom Dateityp können die entsprechenden Menüs mit Hilfe ihrer Eigenschaft visible vorhanden sein oder nicht.

 

Einstellungen in der Registry speichern

 

HKEY_CURRENT_USER

            \SOFTWARE

                        \VB_AND_VBA_SETTINGS

                                   \TextEdit

                                               \Einstellungen

                                                           \FormTop = “3750”   (Beispiel)

 

Form_Unload

Form_Load

 

 


2001-01-02

 

Wolkenförmige Legende: Katerfrühstück zu mir!Visual Basic 6.0

The Return of Katzi
 


Ovale Legende: Frohes Neues!

 

 

 

Projekt: Uebung08

 

Projekt Controls

frmFlexGrid

            Projekt ®Komponenten ®Microsoft FlexGrid Control 6.0

 

 

cmdFragen

 

cmdSetzen

chkGridLines

 

chkFokusRechteck

 

chkBigSelection

 

chkSpaltenbreiteFragen

 


cmdSpaltenbreiteSetzen

 

cmdZeilenhöheFrage

 

cmdZeilenhöheSetzen

 

cmdAktiveZelleFragen

 

cmdAktiveZelleSetzen

 

cmdZellinhaltLesen

 

cmdZellinhaltSetzen

 

cmdTabelleFüllen

 

cmdTabelleFüllen2

cmdMultiplizieren

 


 

grd1.Row = I

grd1.Col = J                        =          grd1.TextMatrix (I, J) = “Hallo”

grd1.Text = „Hallo“

 

 

cmdTextMatrix

cmdClear

 

cmdAddItem

 

cmdRemoveItem

 

 

Markierung von mehreren Zellen

Werden beim Markieren mit der Maus mehrere Zellen überstrichen, ist die erste Zelle mit Markierungsrahmen versehen und die übrigen gefärbt.

 

Die erste Zelle wird mit Col und Row angegeben, die zuletzt überstrichene mit ColSel und RowSel.

 

 

cmdSelektionFragen

 

cmdSelektionSetzen

 


cmdClipFrag

 

cmdClipSetz

Top Row und Left Col

·        Koordinaten der ersten sichtbaren freien Zelle (sinnvoll beim Scrollen)

 

 

cmdErsteFrag

 

cmdErsteSetz

 

 

Zeilen- und Spaltenköpfe beschriften

 

cmdKöpfe

 

 


2001-01-03

 

Visual Basic 6.0

 

 

Projekt Uebung09

 

Tipps zu Ag4 und Ag5

Hilfe zu RND-Funktionen

Erzeugen von ganzzahligen Zufallszahlen aus einem Bereich

 

Int ((Obergrenze – Untergrenze + 1) * RND + Untergrenze)

 

in Ag4:

grd1.Text = CStr (Int ((50 – 1 + 1) * RND + 1))

 

 

Projekt Controls

 

 

frmFlexGrid

 

Eigenschaft ColAlignment

(Ausrichtung des Zellinhaltes)

®Werte zwischen 0 und 9

 

 

Left

Center

Right

Top

0

3

6

 

Middle

 

1

 

4

 

7

 

Bottom

 

2

 

5

 

8

 

Wert 9: Zahl rechts, Text links

 

cmdColAlignmentFrag

 

cmdColAlignmentSetz

 

Aufgabe:

Legen Sie einen UpDown-Button udColAlignment an, setzen Sie in der Form_Load Min auf 0 und Max auf 9. Lassen Sie durch UpClick, DownClick oder Change die Eigenschaft ColAlignment aller Spalten setzen.

 

udColAlignment

 

cmdFarbe

 

chkFillStyle

cmdFarbe


cmdSchrift

 

chkFillStyle

 

 

 

Projekt Grundlagen

 

Ereignisse der Form

·        soll uns zeigen, wann welches Ereignis der Form auftritt

frmEreignisse

 

 

Form_Load

 

 

Form_Unload

 

Form_Activate, Form_Click, Form_Initialize, Form_Paint, Form_Resize, Form_Terminate ®nach gleichem Muster

 

 

Reihenfolge:

Initialize          nur beim ersten Aufruf

Load

Resize

Paint

...

Unload

Terminate      bei Programmende

 

Activate:

wenn Form nicht aktives Fenster war und nun wieder wird

 

bei Größenänderung

Resize

Paint

Das Query-Unload-Ereignis

·        tritt vor Unload auf und kann Unload-Ereignis verhindern, wenn Variable Cancel auf einen Wert ungleich 0 gesetzt wird

 

Form_QueryUnload

Unload Mode

·        Grund für Auslösen der QueryUnload

 

0          Schließen mit

1                   Unload-Anweisung

2                   Windows wird beendet

3                   vom Task Manager terminiert

4                   Mutterfenster wird geschlossen

5                   übergeordnete Form wird beendet

 

 


Form_MouseDown

 

 

 

cmdKlickMich

 

cmdFernsteuerung

 


Ereignisse eine Textfeldes

 

txt1/txt2

 

 

 

txt3

 


txt4

 

 

 


2001-01-04

 

Visual Basic 6.0

 

Projekt Uebung10

 

 

 

Projekt Grundlagen

 

frmTastatureingaben

 

Reaktion auf Tastatureingaben

 

Ereignisse Key Down, Key Up, Key Press

·        KeyPreview erkennt ASCII-Wert der Taste

·        wird wiederholt ausgelöst, bei Festhalten der Taste

 

 

 

txt1

 


cmdKeyPreview

 

chkKeyPreview

 

Form

 

txt4

 

cmdStart

 

 

KeyUp und KeyDown

Key Code      Tastencode

Shift                Zustand Umschalt, Strg, Alt

 

 

txt5

 


txt7

 

txt8

 

Form

 

 

 

Fehlerbehandlung

 

Syntaxfehler

·        werd3en von der IDE entdeckt

 

MsgBox „Heute“&Chr(32)&„ist Donnerstag“

X = CStr (Val (txt17)

 

Laufzeitfehler

·        führen ohne Fehlerbehandlung zum Programmabsturz

 

A = 7

B = 0

C = A / B        ÞFehler 11

 

X = „Hallo“

Y = (Date(X)  ÞFehler 13

 

Dim A As Integer

A = 456789   ÞFehler 6

 

Logische Fehler

·        sind nicht abfangbar

 


Laufzeitfehler abfangen

 

On Error Resume Next

·        eine fehlerauslösende Anweisung wird ohne Kommentar übersprungen

 

Dim X As Integer, Y As Integer, Z  ‘Z ist Variant-Variable

On Error Resume Next

X = 456789  ‘wird zu Null

Y = 5

MsgBox CStr (X + Y)

MsgBox CStr (X + Y + Z)

 

Þnix passiert…

 

 

On Error Goto Sprungmarke

·        Sprungmarke frei wählbar

·        Fehlerbehandlung für jeden einzelnen Fehler möglich

 

On Error Goto Fehlerbehandlung

...

Exit Sub

Fehlerbehandlung:

If Err.Number = 6 Then

            Resume  ‘kehrt zur selben Stelle zurück

End If

If Err.Number = 13 Then

            Resume Next  ‘fährt mit der nächsten Anweisung fort

End If

MsgBox “Anderer Fehler” & Err.Discription

 

 

Err-Objekt

·        Eigenschaften:    Number und Description

·        Methoden:           Raise und Clear

 

Fehler auslösen:

            Err.Raise Fehlernummer

 

Ausgelösten Fehler löschen:

            Err.Clear

 

 


frmFehlerbehandlung

 

 

 

MDI-Applikationen

Multiple Dokument Interface

 

MDI Form      „Mutterfenster“

 

MDI Childs     „Kindfenster“

 

 

Projekt MDIApplikation1

 

Form1                        ®frmChild1

 

Projekt ®MDI-Formular hinzufügen

neue MDIForm          ®frmMDI

 

Projekt ®Eigenschaften ®Startobjekt ®frmMDI

 

frmMDI

Form_Load

frmChild1.Show

 

Eigenschaften von frmChild1:

MDIChild auf True

 

2 weiter Formulare frmChild2 und frmChild3 erstellen und integrieren

 

 


2001-01-05

 

Visual Basic 6.0

 

MDI-Fenster (Zusammenfassung)

·        im Projekt kann es nur eine MDI-Form geben, diese sollte Startobjekt sein

·        normale Formulare werden im MDI-Fenster angezeigt, wenn

o       ihre Eigenschaft MDIChild = True ist

o       sie mit der Show-Methode geladen werden

 

Mutterfenster soll Menü erhalten

·        ein Menü(haupt)punkt kann die Eigenschaft WindowList bekommen und zeigt dann alle geöffneten Kindfenster an

Anordnen von Fenstern

Arrange-Methode

0                    überlappend                         =vbCascade

1                    untereinander                       =vbHorizontal

2                    nebeneinander                     =vbTileVertical

3                    Symbole anordnen              =vbArrangeIcons

 

Menüs der Kindfenster verdrängen Menüs der MDI-Form

            frmChild2 soll Menü bekommen

 

 

Die Funktion Alle Fenster zum Normalbild

mnuAllNormal

 

Formen duplizieren

cmd1

 

 

Projekt Grundlagen

 

frmVBAFunktionen

 

 

Logische Operatoren vergleichen boolsche Werte miteinander

 

AND   nur wahr, wenn beide Argumente wahr sind

 

OR      wahr, wenn ein Argument wahr ist

 

NOT   nicht

 

EQV   Äquivalenz (beide müssen übereinstimmen)

 

IMP     Implikation (1. Wert wahr, 2. falsch ®Ergebnis falsch; sonst wahr)

 

XOR   exclusives ODER (nur eins darf wahr sein)

A

B

A and B

A or B

not A

A eqv B

A imp B

A xor B

1

1

1

1

0

1

1

0

1

0

0

1

0

0

0

1

0

1

0

1

1

0

1

1

0

0

0

0

1

1

1

0

 

 

Like-Operator

·        dient dem Vergleich zweier Zeichenfolgen

 

Freitag Like Freitag             ®Wahr

Freitag Like freitag              ®hängt von Option Compare ab:

                                               Option Compare Binary (Standard) ®Falsch

                                                           binärer Vergleich (A = 65, a = 97)

                                               Option Compare Text ®Wahr

                                                           Textvergleich (A entspricht a)

 

 

IS-Operator

·        dient der Feststellung, ob zwei Objekt-Variablen auf dasselbe Objekt verweisen

 

 

Mathematische Funktionen

 

Abs    absoluter Betrag

 

Sgn    Signum (Vorzeichen); pos. Zahlen und Null: 1

                                                  neg.Zahlen: -1

 

Int      

liefern Ganzzahlen; im negativen Bereich liefert Int bei Rundung die

Fix      kleinere Zahl; Fix die größere

 

Rnd    Zufallszahl

 

Sqr     Wurzel

 

Exp    Exp (X) liefert ex (e: Eulersche Zahl ®2,71...)

 

Log    Log (X) liefert ln x (natürlicher Logarithmus)

 

 

Textfunktionen

 

Chr     wandelt Zahl 0...255 in Ascii-Zeichen um

 

Asc     gibt Ascii-Code eines Zeichens wieder

 

Str      Zahl in Zeichenfolge mit Vorzeichen; pos. Zahl ®“_8“

 

Len     Länge einer Zeichenfolge

 

LenB  Länge in Byte

 


Ltrim  führende

 

Rtrim  folgende                                Leerzeichen entfernen

 

Trim   führende und folgende

 

String            wiederholt Zeichen

 

Replace

 

 


Left                                                               Left (ZF, Anzahl Zeichen)

 

Right  ermittelt Teile aus Zeichenfolgen   Right (ZF, Anzahl Zeichen)

 

Mid                                                                Mid (ZF, Startposition, Anz. Zeichen)

 

StrComp       vergleicht Zeichenfolge

 

                                   StrComp (ZF1, ZF2)

                                   Ergebnis:       0 ®gleich

                                                         -1 ®ZF1 im Alphabeth vor ZF2

                                                           1 ®ZF1 im Alphabeth hinter ZF2

 

LCase                       in Kleinbuchstaben

 

UCase           in Großbuchstaben

 

StrConv        StrConv (ZF, compare)

                        compare        1          groß

2                   klein

3                   jedes Wort groß

 

InStr               ermittelt Position des ersten Auftretens einer Zeichenfolge in

einer anderen Zeichenfolge

InStr (Startposition, WoSuchen, WasSuchen, Vergleich)

cmdSuchKomma

Wenn der User in txtEin1 eine Zahl mit Komma eingibt, soll das Komma in einen Punkt umgewandelt werden und die neue Zahle in txtAus1 geschrieben werden

 

 

cmdUebung

 

 

Datum und Uhrzeit

 

Date

als Funktion:

·        meldet das Datum

·        txtAus1 = CStr(Date)

 

als Anweisung:

·        ändert das Systemdatum (!!!)

·        Date = CDate(txtEin1)

 


Datumswerte zusammenbauen

 

Cdate(…)

 

DateSerial    erwartet Jahr, Monat, Tag als Zahlen

                        DateSerial(2001,01,05)

 

DateValue    erwartet das Datum als Zeichenfolge

                        DateValue(5.Januar.2001)

 

DateAdd       erstellt ein neues Datum aus einem alten Datum und einer

Anzahl von Intervallen

14:08 + 52min                = 15:00

alt      + Anzahl Intervall = neu

txtEin1  txtEin2                  txtAus1

 

DateAdd(Intervall, Anzahl, DatumAlt)

 

yyyy     Jahr

q         Quartal

m        Monat

y          Tag des Jahres

d         Tag

w         Wochentag

ww      Woche

h          Stunde

n          Minute

s          Sekunde

 

DateDiff        berechnet Anzahl von Intervallen zwischen zwei Daten

                        DateDiff(Intervall, Datum1, Datum2)

                       

 

DatePart       liefert den Teil eines Datums, z.B. Wochentag

                        DatePart(Intervall, Datum, ErsterWochentag, ErsteWoche)

 

Weekday      ermittelt Nummer des Wochentages

                        Weekday(Datum[,ErsterWochentag])

 


cmdWeekDay

 

 


2001-01-08

 

Visual Basic 6.0

 

 

Projekt Grundlagen

 

frmVBAFunktionen

 

Ausgabe von Wochentagen

 

WeekdayName(Wochentagszahl[, ob abkürzen, ErsterWochentag])

 

WeekdayName(Val(txtAus1), False, vbMonday)

 

Ausgabe von Monaten

 

MonthName(Monatszahl[, ob abkürzen])

 

MonthName(Month(Now()), True)

 

 

 

Projekt MDIVBA

 

 

Projekt Uebung12

 

Wie kann man die Listenelemente einer Liste einzeln ansprechen?

 

z.B. das dritte Element:

MsgBox lst1.List(2)

 

z.B. alle Elemente von lst1 in lst2 schreiben:

For I = 0 To lst1.ListCount – 1

            lst2.AddItem lst1.List(I)

Next

 

z.B. alle Elemente von lst1 in Spalte 1 von grd1 schreiben:

grd1.Rows = lst1.ListCount

grd1.Col = 1

For I = 0 To lst1.ListCont – 1

grd1.Row = I + 1

grd1.Text = lst1.List(I)

 


cmd2

 

Datenfelder

 

Variablen                              Datenfeld X(4)

A =      “Eins                          X(0) = „Eins“

B =      “Zwei”                         X(1) = „Zwei“

C =      „Drei“                         X(2) = „Drei“

D =      „Vier“                          X(3) = „Vier“

E =      „Fünf“                         X(4) = „Fünf“

 

Dim X (4) As String ‘erzeugt X(0) X(1) X(2) X(3) X(4)

 

Dim Y(1 To 3) As Integer ‘erzeugt Y(1) Y(2) Y(3)

 

·        Untergrenzen-Standard ist 0 bzw. das mit Option Base eingestellte Verhalten

 

Im allgemeinen Formteil:

Option Base 0         ®Standard

Option Base 1         ®kleinster Datenfeld-Index = 1

 

Dim V (1 To 3, 1 To 2)

            ‘erzeugt          V(1,1)

                                   V(1,2)

                                   V(2,1)

                                   V(2,2)

                                   V(3,1)

                                   V(3,2)

 


frmDatenfelder

 

cmdDatenfeld1

cmdDatenfeld2


Felder variabler Größe – Dynamische Felder

im allgemeinen Teil der Form/des Moduls

            Private Feldname() As Datentyp

 

 

in einer Prozedur

            ReDim Feldname (X To Y, X To Y, …)

 

 


2001-01-09

 

Visual Basic 6.0

 

Datenfeld

 

Dim Y(4, 3) As String

 

 

 

 


Feldgrenzen bestimmen

 

Obergrenze:

 

            UBound(Feldname, Dimensionsnummer)

 

Untergrenze

           

            LBound(Feldname, Dimensionsnummer)

 

Dim B (0 To 7, 1 To 4)

            LBound(B,1)             0

            LBound(B,2)             1

            UBound(B,1)             7

            UBound(B,2)             4

 

 

Projekt UebungH

 

 

Projekt Grundlagen

 

frmDatenfelder

 

cmdGrenzen3   (am Ende der Prozedur von cmdDatenfeld3 aktivieren)

ReDim

 

ReDim-Anweisung initialisiert ein Feld neu; alle Daten gehen verloren.

 

z.B.:

Private X()

 

ReDim X(2)

X(0) = „Hallo“

X(1) = „Dienstag“

X(2) = „Januar“

Redim X(5)  ‚alle Daten gehen verloren!

 

In solchen Fällen muß die Anweisung ReDim Preserve eingesetzt werden.

 

ReDim Preserve X(5)

 

ÞDie vorhandenen Daten bleiben dann erhalten

 

 

cmdDatenfeld4a

im allgemeinen Formteil:

Private Feld4() As Integer

 

 

 

Benutzerdefinierte Datenfelder

 

·        zuerst wird ein benutzerdefinierter Datentyp angelegt

·        dann kann ein Feld von diesem Typ definiert werden

 


allgemeiner Formteil:

 

‚Benutzerdefinierte Datenfelder

Private Type Person

            Name As String

            Vorname As String

            Nummer As Integer

            Geboren As Date

End Type

Private Personen() As Person

 

cmdPersonenEingabe

 


2001-01-10

 

Visual Basic 6.0

 

Funktion Split

·        erzeugt aus einem String ein eindimensionales Datenfeld

 

Syntax:

 

Split(Zeichenfolge[, Trennzeichen, Anzahl, Vergleichsoption])

 

Beispiel:

 

allgemeiner Formteil:

‚Feld für Nachtrag VBA-Funktionen

Private VBAF() As String

 

cmdSplit

 

Join

·        erzeugt einen String aus dem gesamten Inhalt eines Feldes

 

Syntax

           

Join(Feld[, Trennzeichen])

 

cmdJoin

 

 

Filter

·        Filter eines Datenfeldes nach Auftreten oder Ausschließen eines Filterstring

 

Syntax

 

Filter(Feld, Wert[, aufnehmen, vergleichen])

 


cmdFilter

 

Projekt Uebung12_2

 

 

Projekt Applikation2

Eigenschaft Tag einer Form

·        Speicherplatz für einen String

 

NeueForm() ist Objektvariablen-Feld

 

mnuOpen

Dateiname ist wählbar

 

wenn Zähler Null ist, wird das Bild in frmChild angezeigt

 

wenn Zähler nicht null ist, wird

·        das Feld um ein Element vergrößert (ReDim Preserve)

·        neues Fenster erzeugt und Bild dort angezeigt

 

mnuClose

Nummer als String wird eingegeben, dann alle Fenster abgefragt, ob Tag gleich Nummer; wenn ja ®geschlossen

 

Wenn Nummer = Leerstring ®Mutterfenster wird geschlossen

Lösung A:

in MDIForm_Load:

Me.Tag = „Nugehts“

 

Lösung B:

in mnuClose, nach Eingabe Nummer:

If Nummer = „“ Then Exit Sub

Þbeste Lösung, da leicht nachvollziehbar!

 

Lösung C:

For Each…

            If Not TypeOf X Is MDIForm Then

                       If X.Tag = …

‘Ausklammerung der MDI-Form

Anwendung von Datenfeldern zu MDI-Fenstern

 

            Erinnerung:    Dim X As Form

                                   Set X = New frmChild1

 

            als Feld:         Dim Neue Form() As Form

 

                                   ReDim NeueForm(2)

                                               Set NeueForm(0) = New frmChild1

                                              

                                               (als Schleife)

 

 

 

A(17) = “17BB04012

 

                laufende Nr.

                    Verkäufer-Code

                           Monatszahl

                               Betrag des Umsatzes

 

entweder:       mehrere Felder:

                        Nummer(17) = cInt(Left(A17), 2))

                        Betrag(17) = Ccur(Right(A(17), 3))

                       

 

oder:               ein benutzerdefiniertes Feld:

                        Daten()

                                   Daten(17).Nummer

                                   Daten(17).Betrag

                        ...

 

 

in:

Projekt UebungJ

 

 


2001-01-11

 

Visual Basic 6.0

 

Projekt UebungJ

 

cmdMachDaten

 

Datensatz per Zufall erzeugen

 

17BB04012

 

Zufallszahl:

            Int((Obergrenze – Untergrenze + 1) * Rnd + Untergrenze)

 

Format (I,00)

String(2, Chr(Int((90 – 65 + 1) * Rnd + 65)))

Format(Int((12 – 1 + 1) * Rnd + 1), “00”)

Format(Int((999 – 0 + 1) * Rnd + 0), “000”)

 

 

 

Projekt Grundlagen

 

 

Sortieren von Daten

 

Ausgangsdaten

(1)       5

(2)       3

(3)       4

(4)       1

(5)              2

 

Index I Anzahl N

 

Vergleich

(I)                  <= (I + 1)

ja         nein

ok        austauschen

 

Austauschbeispiel:

A = 3              B = 7

tausche A und B

 

 

 

 

 

 

1.      Durchgang

I = 1

(1) <= (2)?

(1)   3

(2)   5

(3)   4

(4)   1

(5)   2

 

2.      Durchgang

I = 2

(2) <= (3)

(1)   3

(2)   4

(3)   5

(4)   1

(5)   2

 

3.      Durchgang

I = 3

(3) <= (4)?

(1)   3

(2)   4

(3)   1

(4)   5

(5)   2

 

4.      Durchgang

I = 4

(4) <= (5)?

(1)   3

(2)   4

(3)   1

(4)   2

(5)   5

 

frmSortieren

cmdEin

cmdSort1

 

 

 

 

Projekt UebungI_V2

 

cmdSort1

 

Projekt Sort

 

 


2001-01-12

 

Visual Basic 6.0

 

Wie vergleicht man Strings?

 

StrComp(Zeichenfolge1, Zeichenfolge2, Vergleichsoption)

 

Rückgabewerte:

            -1        ZF1 vor ZF2

0                   ZF1 = ZF2

1                   ZF1 hinter ZF2

 

If StrComp(„...“, „...“, 0) = 1 Then

                        tauschen

 

 

 

Projekt Uebung14

 

Die Daten des Feldes Buecher sollen nach Name des Autors bzw. nach Titel des Buches sortiert ung ausgegeben werden. Nutzen Sie für die Ausgabe das vorhandene FlexGrid.

 

Gestatten Sie aufsteigende und absteigende Sortierung.

 

 


2001-01-15

 

Visual Basic 6.0

 

 

Dateizugriffe

 

Zugriffsmodus                                  Bemerkung

 

Sequentieller Zugriff                     - meist ASCII-Textdateien

Modus Input                          - nur lesen

Modus Output                       - nur schreiben

Modus Append                     - nur anhängen

 

Wahlfreier Zugriff                           - Dateien mit einer festen Satzstruktur, die von VB beim Schreiben festgelegt wurde

Modus Random                    - lesen und schreiben

 

Binärer Zugriff                                - Byte-weiser Zugriff

Modus Binary                       - lesen und schreiben

 

 

Datei kopieren

 

FileCopy Pfadangabe1, Pfadangabe2

                (Quelle)          (Ziel)

 

z.B. FileCopy „C:\Config.sys“, „C:\Test.txt“

 

Datei löschen

 

Kill Pfadangabe

 

z.B. Kill “C:\Weghier.txt”

 

 

 

Projekt Dateizugriffe

 

 

Sequentielle Dateizugriffe

 

Fenstergrößen:

MDIForm_Load

Me.Top = 0: Me.Left = 0

Me.Height = Screen.Height: Me.Width = Screen.Width

Für alle Zugriffe:

·        Datei erhält beim Öffnen eine Nummer

·        Datei wird in VB mit Ihrer Nummer angesprochen

·        VB kann 511 Dateien gleichzeitig geöffnet halten

 

FreeFile

·        meldet die nächste freie Zugriffsnummer

 

Syntax:

 

FreeFile oder FreeFile(0) liefert eine Nummer von 1 bis 255

 

FreeFile(1) liefert Nummer von 256 bis 511

 

 

cmdFreeFile1

 

cmdFreeFile2

 

 

Open-Anweisung

 

Syntax:

 

Open vollständiger Name For Modus As #Nummer

 

Open „C:\crash.txt“ For Input As #23 (#muß nicht unbedingt sein)

 

 

Seek-Anweisung

 

cmdSeekSetz

 

Input-Anweisung

·        liest von der aktiven Position bis zum nächsten Trennzeichen und speichert den Inhalt in einer Variablen

 

Input #Dateinummer, Variablenname

 

cmdInput1

 

cmdInputAlles

 

 

Line Input-Anweisung

·        liest von der aktuellen Position bis zum nächsten Umbruch

 

Syntax:

 

Line Input #Dateinummer, Variablenname

 

 


cmdLineInput

 

cmdLineInputAlles

 

 

Input-Funktion

·        liest an der aktuellen Position beginnend eine Anzahl Zeichen

 

Input (Anzahl, #Dateinummer)

 

cmdInput2

 


cmdInput2Alles

 

 

 

 

 

Zusammenfassung:

 

Input-Anweisung

·        lesen bis Trennzeichen (Komma, Umbruch)

 

Input-Funktion

·        lesen einer Anzahl Zeichen

 

Line Input-Anweisung

·        lesen bis Umbruch

 

 

Dateimodus Output

 

Vorsicht! Datei im Modus Output öffnen bedeutet:

 

Öffnen – Leeren – auf Daten warten

 

 

Write-Anweisung

·        setzt die Inhalte in Anführungszeichen und trennt sie durch Kommata – günstig für die Input-Anweisung

 

Write #Dateinummer, Variablenliste

 

 


cmdWrite1

 

Print-Anweisung

 

cmdPrint1

 


2001-01-16

 

Visual Basic 6.0

 

 

Sequentielle Dateizugriffe

 

Modus            Anweisung/Funktion

Input              Input

                        Input()

                        Line Input

 

Output           Write

                        Print

 

Append         Write

                        Print

 

 

 

Projekt Dateizugriffe

 

frmSequentiell

 

cmdBeispiel1:

Sie erhalten die Datei Beispiel1.asc mit folgender Satzstruktur:

„Vorname“, Betrag

 

Rechteckige Legende: Hier muß Ende sein; keine Leerzeile am Ende!

 

Die Daten sollen eingelesen und nach Betrag sortiert werden. Die Personen mit dem minimalen und dem maximalen Betrag sollen per MsgBox ausgegeben werden.

 

 

cmdBeispiel2

Sie erhalten die Datei Beispiel2.csv; Satzstruktur:

1, 2                 Nummer

3, 4                 Tag

5, 6                 Monat

7, 8                 Jahr

9, 10               Verkäufer

11 – 15          Umsatz

letzte 3           Warengruppe

Sie erhalten die Aufgabe, die Daten einzulesen und so auszuwerten, dass die Anzahl der Verkäufe vom 28.03.00 sowie die Summe der Umsätze von AA als MsgBox ausgegeben werden.

 

Hinweis: Die Funktion DateSerial bildet aus Jahr, Monat, Tag ein Datum

 

 

 

 

 

Wahlfreie Zugriffe

·        Datei muß eine feste (von VB generierte) Struktur haben

·        Die Variable zum Lesen/Schreiben muß dieser Struktur entsprechen

 

frmRandom

 

 

 

 

Binäre Zugriffe

·        byteweiser Zugriff – ansonsten wie Random, d.h. aus Datensatznummer wird Bytenummer

·        außerdem kann nam im Modus Binary die Input-Funktion nutzen

 

frmBinary

 

 

 

 


Zusammenfassung:

 

Kommando

Sequentiell

Wahlfrei

Binär

Close

X

X

X

Get

 

X

X

Input()

X

 

 

Input

X

 

 

Line Input

X

 

 

Open

X

X

X

Print

X

 

 

Put

 

X

X

Write

X

 

 

 

Projekt DateizugriffeUebung

 

Legen Sie ein neues Projekt DateizugriffeUebung.vbp in einem neuen Ordner an.

Das Projekt soll dazu dienen, Orte mit ihren Postleitzahlen und dem zugehörigen Bundesland zu verwalten.

 

Folgende Funktionen sollen gewährleistet sein:

·        Öffnen von Dateien im Modus Input und im Modus Output und Schließen von Dateien

·        Lesen des gesamten Dateiinhaltes mit der Input-Anweisung und Übernahme der Daten in die Listenfelder

·        Übernahme des Inhaltes der Textfelder als Listeneinträge

·        Schreiben der gesamten Listeninhalte in eine Datei mit der Print-Anweisung oder der Write-Anweisung

 

 

 


2001-01-17

 

Visual Basic 6.0

 

Projekt UebungL

 

In einer Form sollen die Hintergrundfarbe per cmd und dlg und die Caption per cmd und InputBox einstellbar sein.

Bei Programmende sollen beide Einstellungen in einer sequentiellen Datei gespeichert werden.

Bei Programmstart sollen die Einstallungen aus der Datei gelesen und gesetzt werden.

Zusatz:

Beim Start soll gefragt werden, ob Benutzereinstellungen gelten sollen, oder nicht.

 

 

Projekt UebungK

 

Lesen Sie die Datei Zeiterfassung.csv in ein Datenfeld ein (Datentyp mit Elementen Nummer As Integer, Kommen As Date, Gehen As Date definieren und Feld erzeugen).

Lassen Sie mit Hilfe der DateDiff-Funktion berechnen, wie viel Minuten Person 3 anwesend war.

Zusatz:

Wandeln Sie die Minutenzahl in Stunden und Minuten um und zeigen Sie die Ergebnisse an.

 

 

Kann man das Programm ohne Form erstellen?

·        Modul hinzufügen mit Prozedur Main (hier hinein Prozedur)

·        Form entfernen

 

Projekt DateizugriffeUebung2

 

Sie erhalten eine sequentielle Datei UMSATZDATEN.ASC mit folgender Satzstruktur:

 

            Nummer, Datum, Verkäufer, Umsatz

 

 

Lassen Sie:

 

a.         die Umsatzsumme eines per InputBox festzulegenden Verkäufers berechnen

 

b.      die Umsatzsumme eines per InputBox festzulegenden Monats berechnen

 

Zusatz: Ausgabe des Feldes in ein FlexGrid

 

Projekt Sportlerdaten

 

Sie erhalten eine sequentielle Datei SPORTLERDATEN.ASC mit folgender Satzstruktur:

 

         Startnummer, Wert1, Wert2, Name

 

Werten Sie die Daten aus, der bessere Wert zählt für jeden Sportler.

Lassen Sie die Sportlerdaten nach dem besseren Wert sortieren.

 

Ideen können aus Sort2000.exe und Sportlerdaten.exe  genommen werden.

 

 


2001-01-18

 

Visual Basic 6.0

 

 

Projekt UebungM

 

Lesen Sie den Inhalt der Datei Zeiterfassung.csv in ein Datenfeld ein und berechnen Sie dabei die Anwesenheitszeit jeder Person in Minuten  ( ... mit DateDiff ) .

Vorschlag:     Nummer, Kommen, Gehen, Minuten

 

Sortieren Sie die Daten nach Minuten absteigend und geben Sie die Daten am Bildschirm aus ( ListBoxen oder FlexGrid ).

 

Zusatz:           Geben Sie auch die Anzahl der Stunden und     

                        Minuten der Anwesenheit aus.

 

 

 

 

 

Projekt UebungTop2000

 

Sie erhalten eine sequentielle Datei Top2000.txt mit folgender Satzstruktur:

 

            Platz, Interpret, Titel

 

Lassen Sie:

 

a.         die Daten in ein benutzerdefiniertes Datenfeld einlesen

 

b.         den gesamten Inhalt des Datenfeldes in einem FlexGrid ausgeben

 

c.         nach einem eingegebenen Interpreten ( Fragment eingeben ) suchen, die gefundenen Daten in ein zweites Datenfeld einlesen und nur diese Daten im FlexGrid ausgeben

 

d.         wie c., jedoch Suche nach Titel

 

e.         das gesamte Datenfeld nach Platz sortieren und im FlexGrid ausgeben

 

f.          eigene Features nach Wahl

 

 

 

 

 

Grafik unter VB

·        Farben

·        Grafische Steuerelemente

·        Grafische Methoden

 

Projekt Grafik

 

QBColor-Funktion

·        liefert einen Farbwert

 

QBColor(X) ‚X von 0...15

 

(stammt aus QuickBasic)

 

Bildschirmauflösung

·        Eigenschaften:

o       Height

o       Width

o       TwipsPerPixelX

o       TwipsPerPixelY

 

Move-Methode

 

Objekt.Move X-Koordinate, Y-Koordinate

 

 


2001-01-19

 

Visual Basic 6.0

 

Grafik-Steuerelemente

Image, Picture

 

Linie   Steuerelement          Line

Figur   Steuerelement          Shape

 

 

Projekt Grafik

 

frmGrafikSteuerelemente

 

Line-Eigenschaften

BorderWidth (Strichbreite)

 

cmdLinie1

 

 

Projekt GrafikSteuerelemente (Übung)

 

Legen Sie ein Projekt mit einer Form an.

Fügen Sie pic1, txt1, (txt2, ) cmd1 ein.

·        in txt1 gibt man eine Anzahl Linien ein

·        bei Klick auf cmd1 soll in pic1 ein Gitter mit gleichem Linienabstand gebildet werden

o       z.B.lin1(0) und lin2(0) im Entwurf erzeugen, dann neue Objekte erzeugen

 

Zusatz:

Lassen Sie unterschiedliche Zahlen für horizontale und vertikale Linien zu

 

Hinweis:         man darf ungerade Zahlen erzwingen ( aus 6 mach 7 usw.)

 

 

 

 

 

 

Grafik-Methoden

·        Funktionen, die ein Steuerelement ausführen kann (wenn es Grafik-Methoden unterstützt)

 

Form, PictureBox unterstützen diese Methoden

 

Image nicht

 

·        Koordinaten beziehen sich immer auf das Steuerelement, mit dem die Funktion ausgeführt wird

 

PSet(100, 100), vbRed   entspricht   Me.PSet(100, 100), vbRed (Form)

 

pic1.PSet(100, 100), vbRed spricht pic1 an

 

 


Move-Methode

·        bewegt ein Objekt und kann dabei die Größe ändern

 

Objekt.Move Links[, Oben, Breite, Höhe]

 

cmdMove

 

 

PSet-Methode

·        setzt einen Punkt, dessen Größe von der Eigenschaft DrawWidth abhängt

 

Objekt.PSet (X-Koordinate, Y-Koordinate)[, Farbe]

 

cmdPSet

 

Eigenschaft AutoRedraw (True, False)

·        legt fest, ob ein Steuerelement die durch grafische Methoden erzeigten Inhalte behält, wenn das Fenster von einem anderen Fenster überdeckt wird, oder nicht

 

 

Line-Methode

·        Linie oder Rechteck zeichnen

 

Objekt.Line Step(X1, Y1) – Step(X2, Y2), Farbe, BF

 

X1, Y1            Anfangspunkt

X2, Y2            Endpunkt

Step               wenn es relative Koordinaten sein sollen, d.h. vom letzten

Punkt aus

Farbe

B                     ein Rechteck

F                     Rechteck wird gefüllt

 

 


cmdLine3

 

 

 

 

Circle-Methode

 

Objekt.Circle Step (X, Y), Radius, Farbe, Anfang, Ende, Verhältnis

 

Verhältnis: Faktor zur Erstellung von Elipsen (Höhe/Breite)

 


unter 1:                                  über 1:

 


Print-Methode

Text drucken

 

Objekt.Print String

 

cmdPrint

 

PaintPicture-Methode

·        kopiert den Inhalt eines grafischen Steuerelementes (Bild) in ein anderes und kann dabei Ausschnitte wählen, verzerren

 

Objekt.PaintPicture Bild, ZielX, ZielY, ZielBreite, ZielHöhe,  _

            QuelleX, QuelleY, QuellBreite, QuellHöhe

 

z.B.

pic1.PaintPicture img1.Picture, 100, 200

 

cmdPaintPicture

 

 


2001-01-22

 

Visual Basic 6.0

 

 

Point-Methode

 

·        liefert den Farbwert eines bestimmten Punktes einer Form oder einer PictureBox

 

Point (X, Y)

 

z.B.

Dim X As Long

X = pic1.Point(27, 321)

 

pic1_MouseDown

 

 

 

Aufbau eines eigenen Koordinatensystems

Rechteckige Legende: (0, 0)Standard:

                                                                        pic1

ScaleHeight

 

 

 

                                                                 ScaleWidth

 

Scale-Methode

 

·        definiert das Koordinatensystem eines grafischen Steuerelementes

 

Objekt.Scale (X1, Y1)              (X2, Y2)

                        (Ecke links oben) (Ecke rechts unten)

 

Rechteckige Legende: 0, 0pic1

 

 

 

 


z.B.

pic1.Scale (-50,50) – (50, -50)

 

·        ohne Argument wird wieder auf Twips zurückgesetzt

 

pic1.Scale

 

cmdScale/cmdScaleTwips

 

cmdUebung

 

 

 

 

Weitere Möglichkeit, das innere Koordinatensystem zu beeinflussen:

 

Eigenschaften           ScaleTop      Koordinate von oben

                                   ScaleLeft      Koordinate von links

                                   ScaleHeight innere Höhe

                                   ScaleWidth  innere Breite

 

cmdScaleLeftTop

 


Noch eine Möglichkeit der Skalierung

 

Eigenschaft ScaleMode

 

Objekt.ScaleMode = Wert

 

0                   benutzerdefiniert

1                   Twips

2                   Point (72 Punkte = 1 Zoll)

3                   Pixel

4                   Characters (120 x 240 Twips)

5                   Inch (Zoll)

6                   mm

7                   cm

 

cmdScaleModeFrag/cmdScaleModeSetz

 

 

 

 

 

Projekt GrafikMethodenUebung

 

Legen Sie ein Projekt mit einer Form an. Fügen Sie pic1 ein.

·        Verwenden Sie Timer und Zufallsgenerator

·        Erzeugen Sie grafische Elemente Ihrer Wahl

 

Vorschlag:

            cmdPSetGo              cmdPSetStop

            cmdLineGo               cmdLineStop

            cmdCircleGo            cmdCircleStop

 

            cmdCLS

 

·        Verwenden Sie eigene Ideen

 

Zusatz:

Legen Sie ein eigenes inneres Koordinatensystem für pic1 fest und lassen Sie eine Sinus-Funktion zeichnen

 


Projekt Grundlagen

 

frmDrucken

 

 

Drucken aus VB-Applikationen

 

·        die Printers-Auflistung                                      (Count)

·        das Printer-Objekt                                             (DeviceName)

·        die SelPrint-Methode des RTF-Controls

 

 

PrintForm-Methode

·        druckt Inhalt einer Form

 

Objekt.PrintForm

 

cmdPrintForm

 

 

Printer (der aktuelle Drucker als Objekt) unterstützt grafische Methoden

 

cmdPrinterEigenschaften

 

 

Print-Methode

 

Objekt.Print String

 

Zuerst werden alle Befehle erteilt, dann wird mit Printer.EndDoc der Druckvorgang ausgelöst bzw. mit Printer.KillDoc unterbunden

 

cmdPrint1

 

cmdGrafikMethoden

 

 

 


API-Zugriffe

            Application Programming Interface

 

·        API-TextViewer (Start ®Programme)

®Datei ®Textdatei laden

Win32API.txt

 

Projekt APIZugriff

 

1.      Schritt: API-Funktionen deklarieren

®Start ®Programme ®MSVisualBasic6.0 ®MSVisualBasicTools ®APITextViewer

 

Datei ®Textdatei laden ®Win32API.txt

 

API-Typ: Deklarationen

 

 

ExitWindowsEx suchen ®Hinzufügen ®Kopieren

 

ins Modul mAPIZugriff.bas einfügen

 

API-TextViewer ®Typ: Konstanten

®alle, die mit EWX beginnen in das Modul einfügen

 

 

mAPIZugriff.bas

 

frmAPIZugriff

 

 

Sounddatei abspielen

API-TextViewer

®SNDPLAYSOUND suchen, ins Modul kopieren

 

 

Projekt APICards

 

 


2001-01-23

 

Visual Basic 6.0

 

 

Projekt APISysInfo

(Beispiel aus Monadjemi)

 

 

 

 

Arbeit mit Objekten

 

 

Einführung in objektorientierte Programmierung

Objekt:

·        in sich abgeschlossene Softwarestruktur

·        von außen über Eigenschaften und Methoden ansprechbar

·        kann auf Ereignisse reagieren

 

Eigenschaften:

lst1.ListCount

txt3.ForeColor

 

Methoden:

lst1.AddItem „Test“

lst5.RemoveItem 37

grd27.Clear

 

Ereignisprozeduren:

cmd1_Click

txt4_Change

 

·        Objekt kann man über Objektvariablen ansprechen

 

Dim X As Control

For Each X In Controls

            MsgBox X.Name

Next                                     

 

Dim A As Object

Set A = txtDasTextfeldMitDemLangenNamen

A=ForeColor = vbRed

A.Text = “Inhalt”

Set A = Nothing ‘Objekt A wieder freigegeben

 

‘Unterschied zu normalen Variablen

Dim B As Integer

[Let ]B = 27                                                            

 

‘Die With-Anweisung

‚festlegen oder abfragen von Eigenschaften in einem With-Block

With txtDenNamenWillIchNichtOftSchreiben

.BackColor = vbBlue

.ForeColor = vbYellow

.Text = „Hallo“

End With

 

·        Man kann VB-interne Objekte benutzen

 

Screen-Objekt:

 

Me.Width = Screen.Width

 

Printer-Objekt

 

Printer.Print “Hallo” ‘aktueller Drucker wird angesprochen

 

·        Man kann auf Auflistungen von Objekten zugreifen

 

Forms           alle geöffneten Fenster

Controls       alle Steuerelemente

Printers         alle installierten Drucker

 

 

Projekt Grundlagen

 

frmObjekteEinführung

 

 

 

Erzeugen von Objekten während der Laufzeit

 

bei Steuerelementfeldern:

z.B.

lin(0) im Entwurf

 

im Programm:

Load lin1(1)

Load lin1(2)

 

bei Formen:

mit dem Schlüsselwort New

 

Objektklasse

 

·        TextBox in der Werkzeugsammlung

·        Form im Entwurf

 

Instanz eines Objektes

 

·        TextBox txt1 auf der Form (im Entwurf)

·        Form während der Programmlaufzeit

 

 

cmdKlonen

 

 

Eigene Objekte benutzen

 

·        eine Objekt-Klasse erstellen – Klassenmodul

·        eine Instanz der Klasse erzeugen – das Objekt selbst

·        mit den Eigenschaften und Methoden des Objektes arbeiten

 

Form

 

Klassenmodul

 
 

 

 

 


                         Objekt wird hier erzeugt                          „Bau-Anleitung“

 

Methoden des Objektes

·        öffentliche Prozeduren und Funktionen, die im Klassenmodul deklariert sind

 

Eigenschaften des Objektes

·        werden wie öffentliche Variablen angesprochen, sind aber keine

 

 


Projekt Grundlagen

 

frmKlassenmodule

 

 

Projekt ®Klassenmodul hinzufügen

Eigenschaft Name ändern ®MyClass.cls

 

 

MyClass

Vergleich von öffentlichen Variablen und Eigenschaften

 

allgemeiner Teil

 

frmKlassenmodule

cmdFragAC/cmdSetzAC

 

Eine öffentliche Variable ist ungeschützt; jede Zuweisung wird ausgeführt

 

Eigenschaft des Objektes

                                                                  MeinObjekt

intern:

Private A

 
 


      außen: MeinObjekt.EigX                                              Abfrage d. Eigenschaft

 


       PropertyLet-Anweisung                                               PropertyGet-Anweisung

 

 

Vorbereitung im Klassenmodul (allgemeiner Teil)

Class_Initialize

Extras ®Property (Public) hinzufügen: Eig1

 

Fragen:

frmKlassenmodule

cmdFragEig1

 

Setzen:

MyClass

cmdSetzEig1

 

 

 

Öffentliche Variable AC

Eigenschaft Eig1

 

intern in BC gespeichert

von außen abfragbar

Abfrage führt Property Get aus, dort wird entschieden, was passiert

von außen festlegbar

Versuch der Festlegung führt PropertyLet aus, dort kann man entscheiden, was passiert

 


Beispiel einer schreibgeschützten Eigenschaft: Eig2

 

MyClass

 

frmKlassenmodule

 

 

 

Eigenschaft Eig3 (Typ String) soll jeder selbst hinzufügen, dabei ein bestimmtes Wort verbieten.

MyClass

 

frmKlassenmodule

 

 

 


Methoden des Objektes

 

·      Methoden des Objektes sind öffentliche Prozeduren bzw. Funktionen im Klassenmodul

 

Public Sub MethodeX in MyClass hinzufügen

 

frmKlassenmodule

 

 

 

Beispiel einer Methode, die manchmal ein interne Prozedur aufruft

 

MyClass

 

cmdMethodeY

 

 

Beispiel für eine Methode, die einen Wert zurückliefert

 

MyClass

 

cmdMethodeZ

 

 

 


Objekte können auf Ereignisse reagieren

dazu muß:

1.      dem Klassenmodul ein Event hinzugefügt werden

2.      mindestens einmal im Code des Klassenmodules das Ereignis mit RaiseEvent ausgelöst werden

3.      das Objekt selbst muß mit dem Schlüsselwort WithEvents deklariert werden

4.      die Ereignisroutine MeinObjekt_Ereignisname mit Programmcode versehen werden

 

Zu 1.

MyClass

im allgemeinen Teil:

 

Zu 2.

MyClass

 

Zu 3.

frmKlassenmodule ergänzen

Public WithEvents MeinObjekt As MyClass

 

Zu 4.

frmKlassenmodule

 

ausprobieren mit neuem Button:

 

 

 

 

Beispiel: Ein Taschenrechner als Objekt

 

Rechnerklasse.cls hinzufügen

 


im allgemeinen Modulteil

 

frmKlassenmodule

allgemeiner Formteil:

 

 

 

MyClass

Public Property Let Op1()

 

Public Property Let Op2()

 

Public Property Get Ergebnis()

 

Public Property Let Ergebnis()

 

 

Erstellen der Methoden im Klassenmodul:

 

Public Sub Subtrahiere und Multipliziere nach gleichem Muster

 

 


2001-01-24

 

Visual Basic 6.0

 

 

Projekt TaschenRechner

 

Nennen Sie die Form des Projektes frmHaupt. Fügen Sie ein Klassenmodul ein.

Fügen Sie in die Form zwei Textfelder zur Zahleneingabe ein. Fügen Sie ein

Steuerelementfeld mit CommandButton ein.

 

Entwerfen Sie ein Programm, das sich an den Taschenrechner aus dem Projekt

Grundlagen anlehnt und mit Hilfe eines Klassenmodules eine kleine

Rechenmaschine aufbaut.

 

Vorgaben :    Verwendung von Property - Prozeduren und Nutzung modulinterner

                        Variablen im Klassenmodul.

                        Verwenden Sie für das Rechenergebnis ebenfalls eine modulinterne

                        Variable und fragen Sie das Rechenergebnis mit Hilfe einer Property -

                        Get Prozedur ab.

                        Setzen Sie mindestens ein Event ein

                        ( z.B. Versuch, Wurzel aus einer negativen Zahl zu ziehen ) .

 

Folgende Funktionen sollen über Methoden aufrufbar sein :

ModDiv ( Modulo - Division ), GanzDiv ( ganzzahlige Division mit \ Operator ),

Hoch ( Operand 1 ^ Operand 2 ) und Wurzel ( Wurzel aus Operand 1 )

 

Fangen Sie alle Fehler ab, die Sie beherrschen.

 

 

 

 

Zugriffe auf Datenbanken

 

DAO (Data AccessObjects)

Im Lieferumfang von VB: Version 3.51

 

nach Installation von Access 2000:

            Version 3.6

 

ADO (ActiveX Data Objects)

Version 2.0

im Internet 2.5, 2.6 downloadbar

 


neues Projekt:

Projekt DBDAO

 

frmMDIDAO

 

frmTeil1 (Caption „Das Data-Steuerelement“)

 

ein Data-Steuerelement (Data1)aus der Toolbox

 

Eigenschaften:

 

Connect                     Access

 

DataBaseName       dbank800.mdb wählen

 

RecordSource          tblBuch

 

txt1 bis txt5 erstellen

 

Eigenschaften:

 

DataSource              Data1

 

DataField                  Autorname                (txt1)

                                   Autorvorname           (txt2

                                   Titel                            (txt3)

                                   Thema                       (txt4)

                                   Preis                          (txt5)

 

 

Arbeit mit dem Data-Steuerelement

 

Unter-Objekt RecordSet (hat Eigenschaften und Methoden)

 

Data1.RecordSet.Eigenschaftsname

Data1.RecordSet.Methodenname

 

 

Zählen der Datensätze

 

RecordCount-Eigenschaft des RecordSet-Objektes

 

da häufig benutzt als Prozedur:

 

cmdZählen

Bestimmen der aktuellen Position

 

AbsolutePosition-Eigenschaft (beginnt bei 0)

 

Prozedur:

 

cmdAktueller

 

 

cmdErster

 

cmdVorheriger

 

cmdNächster

 

cmdLetzter

 

 


Datenänderung benutzerabhängig gestalten

 

·        ein Steuerelement, dessen Eigenschaft DataSource und DataField benutzt werden, heißt „gebundenes Steuerelement“

·        gebundene Steuerelemente besitzen die Eigenschaft DataChanged; diese wird True, wenn man die Daten in einem gebundenen Steuerelement ändert

·        Data-Steuerelement kennt Methoden

 

UpdateRecord       Datensatz wird neu geschrieben

 

UpdateControls     Datensatz wird neu gelesen

 

Prozedur

®allen Prozeduren voranstellen, die aus dem aktuellen Datensatz herausführen

 

Um unbeabsichtigtes Speichern beim Bewegen in einen anderen Datensatz und beim Beenden zu vermeiden, nutzt man das Validate-Ereignis des Data-Steuerelementes:

 

 

 

 

Neuer Datensatz – die AddNew-Methode

 

cmdNeu

cmdAktualisieren

 

cmdLöschen

 

Die Eigenschaft DataSource von gebundenen Steuerelementen kann nicht verändert werden

 

Test: Data2 einfügen und an tblMusik binden.

 

 

Suchen von Datensätzen

 

FindFirst

FindNext

FindPrevious

FindLast

 

Objekt.RecordSet.FindFirst Suchkriterium

 

Suchkriterium entspricht Abfragekriterium (z.B.: Titel = „Die Bibel“)

 

Wenn Datensatz gefunden wird, dann springt der Satzzeiger zu diesem Datensatz, wenn nicht, ist die Eigenschaft NoMatch des RecordSet-Objektes True.

 

 

Idee aus Access:

SuchText = „Titel Like“ & Chr(34) & „*“ & txtSuchtext & „*“ Chr(34)

 

 


2001-01-25

 

Visual Basic 6.0

 

Zugriff mit DAO

 

Data Access Objects (Datenzugriffsobjekte)

aktuell DAO 3.6 Object Library

 

 

Auszug aus Objekthierarchie

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


z.B. Name      des ersten Feldes

                        der dritten Tabelle

                        der ersten Datenbank

 

MsgBox DBEngine.Workspaces(0).DataBases(0).TableDefs(2).Fields(0).Name


Projekt DBDAO

 

frmTeil2

 

Zuerst müssen die Objekt-Bibliotheken im Projekt eingebunden werden

 

Projekt ®Verweise

 

DAO 3.51 deaktivieren

 

DAO 3.6 aktivieren

 

 

cmdVersion

 

Datenbank öffnen

 

OpenDataBase – Methode des Workspace-Objektes

 

Arbeitsbereich.OpenDataBase (Name[, Optionen, Schreibgeschützt,Verbindung])

 

cmdDBLaden

 


cmdTabZeig

 

cmdAbfrZeig

 

Zugriff auf Daten – OpenRecordSet-Methode des DataBase-Objektes

 

Objekt.OpenRecordSet (Quelle[, Typ, Optionen, Sperren])

 

Typen:

dbOpenTable

dbOpenDynamic

dbOpenDynaset

dbOpenSnapShot

dbOpenForwardOnly

 

Jeder Typ hat andere Eigenschaften

 

cmdTabWahl

 

cmdAbfrWahl

 

cmdAnzeigen

 

 

cmdZählen

 

 

cmdMoveFirst

 

cmdMovePrevious

 

cmdMoveNext

 

cmdMoveLast

 

 

 

Neuen Datensatz erzeugen

 

1.      AddNew-Methode ausführen

2.      die Felder mit Werten belegen

3.      Update-Methode ausführen

 

cmdAddNew

 

cmdDelete

 

 

 

Ändern von Daten

1.      Edit-Methode auführen

2.      Fields neu belegen

3.      Update-Methode ausführen

 

 

cmdEdit

 


Filtern von Datensätzen

 

Recordset hat Eigenschaft Filter

 

Object.Filter = Kriterium

 

Kriterium entspricht einer SQL-Anweisung

z.B.

[Thema] like ‚Computer’

 

danach muß Recordset neu geöffnet werden

 

 

cmdFilter

 

cmdFilterWeg

 

 

 

Datensatz suchen

·        Variante von frmTeil1

 

®clonen und anpassen (Feldname muß frei eingebbar sein)

 

cmdSuchen

 

 


2001-01-26

 

Visual Basic 6.0

 

Projekt dbDAO

 

 

Sortieren

Sort-Eigenschaft des Recordset-Objektes

 

Objekt.Sort Sortierkriterium

 

Sortierkriterium         „[Feldname]“

                                   „[Feldname] asc“ (aufsteigend)

                                   „[Feldname] desc“ (absteigend)

 

cmdSort

 

Sortierstring kann kombiniert werden:

 

[Preis] desc, [Autorname]

 

 

 

Abfragen ersellen

Create QueryDef-Methode des DataBase-Objektes

 

Objekt.CreateQueryDef (Name, SQL-String)

 

z.B.:

Dim Q1 As QueryDef

Set Q1 = DB1.CreateQueryDef (“qryTest”, “Select * From tblBuch”)

 

oder:

Dim Q1 As QueryDef

Set Q1 = DB1.CreateQueryDef()

Q1.Name = “qryTest”

Q1.SQL = “Select * From tblBuch”

DB1.QueryDefs.Append Q1

 

 


cmdAbfrage

 

 

Eingabe in InputBox:

 

 

Þ

Select Feldliste From Tabelle Where Kriterium

 

 

Datenfelder haben Datentypen

 

Type-Eigenschaft des Field-Objektes

 

1                   Boolean

2                   Byte

3                   Integer

4                   Long

5                   Currency

6                   Single

7                   Double

8                   Datum/Zeit

9                   Binary

10               Text

 


außerdem:

Size-Eigenschaft

 

max. Größe in Byte; bei Text: Zeichen

 

z.B.

10       ®Text

30               ®30 Zeichen zur Eingabe möglich

 

den Wert von Type kann man im Objekt-Katalog erfahren

VB ®Ansicht ®Objektkatalog

(oder mit <F2> aufrufen)

z.B. dbDouble eingeben und  klicken

 

 

cmdFeldInfos

 

 

Tabellen erstellen

 

CreateTableDef-Methode des DataBase-Objektes

 

CreateField-Methode des TableDef-Objektes

 

man verfährt:

erst TableDef erzeugen

dann Fields hinzufügen

dann TableDef speichern

dann Daten anfügen

 

 

cmdFeldTyp

 

 


cmdMachTabelle

 

 

Ausgabe der Daten eines Recordset in ein FlexGrid

 

frmTeil3

 

(wird durch cmdGRDFüllen aufgerufen)

 

cmdGRDFüllen

 

 

cmdTest

 

 

cmdEdit

 

 


2001-01-26

 

Visual Basic 6.0

 

Projekt dbDAO

 

 

Sortieren

Sort-Eigenschaft des Recordset-Objektes

 

Objekt.Sort Sortierkriterium

 

Sortierkriterium         „[Feldname]“

                                   „[Feldname] asc“ (aufsteigend)

                                   „[Feldname] desc“ (absteigend)

 

cmdSort

 

Sortierstring kann kombiniert werden:

 

[Preis] desc, [Autorname]

 

 

 

Abfragen ersellen

Create QueryDef-Methode des DataBase-Objektes

 

Objekt.CreateQueryDef (Name, SQL-String)

 

z.B.:

Dim Q1 As QueryDef

Set Q1 = DB1.CreateQueryDef (“qryTest”, “Select * From tblBuch”)

 

oder:

Dim Q1 As QueryDef

Set Q1 = DB1.CreateQueryDef()

Q1.Name = “qryTest”

Q1.SQL = “Select * From tblBuch”

DB1.QueryDefs.Append Q1

 

 


cmdAbfrage

 

 

Eingabe in InputBox:

 

 

Þ

Select Feldliste From Tabelle Where Kriterium

 

 

Datenfelder haben Datentypen

 

Type-Eigenschaft des Field-Objektes

 

11               Boolean

12               Byte

13               Integer

14               Long

15               Currency

16               Single

17               Double

18               Datum/Zeit

19               Binary

20               Text

 


außerdem:

Size-Eigenschaft

 

max. Größe in Byte; bei Text: Zeichen

 

z.B.

10       ®Text

31               ®30 Zeichen zur Eingabe möglich

 

den Wert von Type kann man im Objekt-Katalog erfahren

VB ®Ansicht ®Objektkatalog

(oder mit <F2> aufrufen)

z.B. dbDouble eingeben und  klicken

 

 

cmdFeldInfos

 

 

Tabellen erstellen

 

CreateTableDef-Methode des DataBase-Objektes

 

CreateField-Methode des TableDef-Objektes

 

man verfährt:

erst TableDef erzeugen

dann Fields hinzufügen

dann TableDef speichern

dann Daten anfügen

 

 

cmdFeldTyp

 

 


cmdMachTabelle

 

 

Ausgabe der Daten eines Recordset in ein FlexGrid

 

frmTeil3

 

(wird durch cmdGRDFüllen aufgerufen)

 

cmdGRDFüllen

 

 

cmdTest

 

 

cmdEdit

 

 


2001-01-29

 

Visual Basic 6.0

 

 

ADO

ActiveX Data Objects

 

 

 

Projekt dbADO

 

Projekt ®Komponenten ®Microsoft ADO Data Control 6.0 (SP3) hinzufügen

 

®ado1

 

Eigenschaft Connection String ®Dialog öffnen

 

Register Allgemein ®Verbindungszeichenfolge verwenden ®Erstellen...

 

Provider ®Microsoft Jet 4.0 OLE DB Provider

 

Register Verbindung ®Datenbanknamen eingeben oder aussuchen

 

Eigenschaft RecordSource ®Befehlstyp 2-adCmdTable ®tblBuch

 

dann txt1 ... txt5 auf Form erstellen

 

Bei jedem txt:            Eigenschaft DataSource auf ado1

                                   Eigenschaft DataField auf Autorname,..., Preis

 

 

Eigenschaft DataFormat der txt’s wird unterstützt; z.B. txt5 ®Währung

 

 

Das WillChangeField-Ereignis des ADO

·        tritt ein, bevor eine Datenänderung erfolgt

·        hier kann man Datenänderung unterbinden, indem man

o       die prozedurinterne Variable adStatus auf adStatusCancel setzt

o       die DataChanged-Eigenschaft des betreffenden Textfeldes auf False setzt

 


Beispiel:

 

ado1_WillChangeField

 

 

Das Ereignis MoveComplete (nach Bewegung)

 

 

 

Datenquelle von ADO-Steuerelement ändern

 

cmdRecordSourceSQL

 

 

wieder tblBuch nehmen:

 

cmdRecordSource Table

 

 

cmdNeu

 

cmdLöschen

 

 

Verwendung des DataGrid-Steuerelementes

 

frmTeil2

ado1 anlegen und an tblMusik binden

 

Microsoft DataGrid Control 6.0 hinzufügen

 

DataSource auf ado1 setzen (wie frmTeil1 verfahren)

 

Fertig

 

Auch hier ist Datenbindung in Form_Load möglich!

 

 

Die ActiveX Data Objects 2.0 Library

·        man kann DAO und ADO in einem Projekt nicht einfach mischen

·        DataBase-Objekt sind hier durch Connection-Objekt ersetzt

 

DAO

ADO

TableDefs

Schema bzw.Erweiterungen der ADO-Bibliothek

QueryDefs

 

 

 


cmdDBLaden

 

 

Auflisten der Tabellen

 

Connection-Objekt kennt OpenSchema-Methode; damit kann man Tabellennamen der Datenbank als Recordset-Objekt in den Speicher laden

 

cmdTabZeig

 

cmdAbfrZeig

 

 

Erzeugen eines Recordset-Objektes mit der Open-Methode des ADODB-Recordset:

 

RecordSet.Open Quelle, Connection, CursorType, LockType, Optionen

 

Quelle:                      eine Tabelle, Abfrage, ein Command-Objekt, o.ä.

 

Connection:            Verweis auf das Connection-Objekt

 

CursorType:            Einfluß auf Datenzugriff

            adOpenForwardOnly       nur Vorwärtsbewegung möglich

            adOpenKeyset                   dynamisch

            adOpenDynamic               ähnlich

            adOpenStatic                     statischer Zugriff

 

LockType:    betrifft Datensatz-Sperrungen

            z.B. adLockOptimistic         nur aktuellen Datensatz beim Update

 

 

cmdTabWahl

 

 


Tabellen und Abfragen können mit ADO nicht einfach erzeugt werden; darum benötigt man:

 

ADO-Erweiterung ADOX

 

Projekt ®Verweise ®Microsoft ADO Ext. 2.1 for DDL and Security

 

DDL: Data Definition Language

 

 

 

 

Projekt DatenbankzugriffeUebung

 

Viel Spaß!   J

 

 


2001-01-30

 

Visual Basic 6.0

 

Geübt und Klausur geschrieben