Bevor Sie mit dem Codieren beginnen
Der wichtigste (und oft übersehene) Teil beim Erstellen einer Anwendung in Visual Basic ist die Entwurfsphase. Die Notwendigkeit, eine Benutzeroberfläche für die Anwendung zu entwerfen, ist offensichtlich; die Notwendigkeit, den Code zu strukturieren, ist weniger offensichtlich. Unterschiedliche Methoden zum Erstellen von Anwendungen können zu Unterschieden in der Anwendungsleistung sowie der Wartbarkeit und Benutzerfreundlichkeit des Codes führen. Visual Basic-Anwendungscode ist hierarchisch organisiert. Eine typische Anwendung besteht aus mehreren Modulen: einem Formularmodul für jedes Formular in der Anwendung, optionalen Standardmodulen, die Code gemeinsam nutzen, und optionalen Klassenmodulen. Jedes Modul enthält mehrere Prozesse mit Code: Ereignisprozess, Unter-Unterprozess oder Funktionsprozess und PRperty-Prozess. Die Bestimmung, welcher Prozess zu welchem Modul gehört, steht in einer bestimmten Beziehung zum Typ der zu erstellenden Anwendung. Da Visual Basic objektbasiert ist, ist es hilfreich, Anwendungen im Hinblick auf die Objekte zu betrachten, die sie darstellen. In diesem Kapitel wird die Beispielanwendung Vcr.vbp anhand der Objekte bestehend aus einem Videokassettenrecorder und einem Fernsehgerät entworfen. Die VCR-Anwendung enthält zwei Formularmodule, ein Standardmodul und zwei Klassenmodule. Mit dem „Object Browser“ kann die Struktur des Projekts untersucht werden (Abbildung 5.2).
Die Hauptform der VCR-Anwendung (frmVCR) ist das visuelle Bild der Kombination aus Videorecorder und Fernsehbildschirm (Abbildung 5.3). Es besteht aus mehreren Objekten, die realen Szenen nachempfunden sind. Eine Reihe von Befehlsschaltflächen (cmdPlay, cmdRecord usw.) ahmen die Tasten nach, die einen Videorecorder bedienen. Der Software-VCR umfasst außerdem Uhr (lblTime), Kanalanzeige (lblChannel), Funktionsanzeige (shpPlay, shpRecord usw.) und Bildröhre (picTV). Das Formularmodul Vcr.frm enthält Ereignisprozeduren für alle diese Objekte.
In vielen Fällen gibt es wiederholte Prozesse, die von mehreren Objekten gemeinsam genutzt werden. Wenn Sie beispielsweise die Tasten „Wiedergabe“, „Zurückspulen“ oder „Aufnahme“ drücken, müssen die Tasten „Pause“ und „Stopp“ gültig sein. Es ist besser, eine gemeinsame Unterroutine zu erstellen, die alle Schaltflächen aufrufen können, als diesen Code in der Click-Ereignisprozedur jeder Schaltfläche zu wiederholen. Wenn diese Unterprogramme in Zukunft geändert werden, können alle Änderungen vorgenommen werden, indem sie an einer Stelle geändert werden. Das Standardmodul Vcr.bas enthält verschiedene gemeinsame Prozeduren.
Einige Teile des Videorecorders sind unsichtbar, beispielsweise der Bandtransportmechanismus oder die Logik hinter der Aufnahme von Fernsehprogrammen. Ebenso verfügen einige Funktionen von Software-Videorecordern nicht über visuelle Bilder. Diese Teile und Funktionen werden als zwei Klassenmodule Recorder.cls und Tape.cls implementiert. Das clsRecorder-Modul enthält den Code zum Starten des „Aufnahmevorgangs“ und das clsTape-Modul enthält den Code zur Steuerung der Richtung und Geschwindigkeit des „Bandes“. Die in diesen Modulen definierten Klassen stehen in keinem direkten Zusammenhang mit Objekten im Formular. Da es sich um unabhängige Codemodule handelt, kann ein Aufnahmeprogramm problemlos und ohne Änderungen neu erstellt werden.
Neben der Gestaltung Ihrer Codestruktur ist es auch wichtig, eine Namenskonvention festzulegen. Standardmäßig nennt Visual Basic das erste Formular des Projekts Form1, das zweite Formular Form2 usw. Wenn Ihre Anwendung mehrere Formulare enthält, empfiehlt es sich, ihnen aussagekräftige Namen zu geben, um Verwirrung beim Schreiben oder Bearbeiten von Code zu vermeiden. Einige von Visual Basic empfohlene Namenskonventionen sind in Anhang B, „VisualBasic-Codierungskonventionen“, aufgeführt.
Wenn Sie mehr über Objekte erfahren und lernen, Code zu schreiben, finden Sie in der VCR-Beispielanwendung Beispiele für verschiedene Codierungstechniken.
Mechanismus zum Schreiben von Code
Bevor Sie mit dem Schreiben von Code beginnen, ist es wichtig, die Mechanismen des Codeschreibens in Visual Basic zu verstehen. Wie jede Programmiersprache verfügt Visual Basic über eigene Regeln zum Organisieren, Bearbeiten und Formatieren von Code.
Codemodul
Visual Basic-Code wird in Modulen gespeichert. Es gibt drei Arten von Modulen: Formulare, Standards und Klassen. Eine einfache Anwendung kann nur ein Formular haben, wobei sich der gesamte Code der Anwendung im Formularmodul befindet. Wenn der Antrag umfangreich und komplex ist, müssen zusätzliche Formulare hinzugefügt werden. Möglicherweise stellen Sie am Ende fest, dass gemeinsamer Code in verschiedenen Formen ausgeführt wird. Da Sie den Code nicht in beiden Formen duplizieren möchten, erstellen Sie ein separates Modul, das die Verfahren zum Implementieren des gemeinsamen Codes enthält. Eigenständige Module sind Standardmodule. Anschließend können Sie eine Bibliothek mit Modulen erstellen, die gemeinsam genutzte Prozeduren enthalten.
Jedes Standardmodul, Klassenmodul und Formularmodul kann Folgendes enthalten:
Stellungnahme. Sie können Deklarationen von Konstanten, Typen, Variablen und DLL-Prozeduren (Dynamic Link Library) auf Modulebene in Formularen, Klassen oder Standardmodulen platzieren.
Verfahren. Eine Sub-, Function- oder Property-Prozedur enthält Codeteile, die als Einheit ausgeführt werden können. Diese werden im Abschnitt „Prozessübersicht“ weiter unten in diesem Kapitel erläutert.
Formularmodul
Formularmodule (Dateierweiterung .FRM) sind die Basis für die meisten Visual Basic-Anwendungen. Ein Formularmodul kann Prozeduren zur Behandlung von Ereignissen, allgemeine Prozeduren und Deklarationen von Variablen, Konstanten, Typen und externen Prozeduren auf Formularebene enthalten. Wenn Sie das Formularmodul in einem Texteditor anzeigen würden, würden Sie auch eine Beschreibung des Formulars und seiner Steuerelemente einschließlich ihrer Eigenschaftseinstellungen sehen. In ein Formularmodul geschriebener Code ist spezifisch für die spezifische Anwendung, zu der das Formular gehört. Er kann auch auf andere Formulare oder Objekte innerhalb der Anwendung verweisen.
Standardmodul
Standardmodule (Dateierweiterung .BAS) sind Container für Prozeduren und Deklarationen, auf die andere Module innerhalb einer Anwendung zugreifen. Sie können globale (anwendungsweite) oder Modulebene-Deklarationen von Variablen, Konstanten, Typen, externen Prozeduren und globalen Prozeduren enthalten. In Standardmodulen geschriebener Code muss nicht an eine bestimmte Anwendung gebunden sein; wenn darauf geachtet wird, auf Formulare und Steuerelemente nicht namentlich zu verweisen, können Standardmodule in vielen verschiedenen Anwendungen wiederverwendet werden.
Klassenmodul
In Visual Basic bilden Klassenmodule (Dateierweiterung .CLS) die Grundlage der objektorientierten Programmierung. Code kann in Klassenmodulen geschrieben werden, um neue Objekte zu erstellen. Diese neuen Objekte können benutzerdefinierte Eigenschaften und Methoden enthalten. Tatsächlich ist ein Formular ein solches Klassenmodul, auf dem Steuerelemente platziert und Formularfenster angezeigt werden können.
Details Ausführlichere Informationen zum Schreiben von Code in Klassenmodulen finden Sie in Kapitel 9, „Programmieren mit Objekten“.
Beachten Sie, dass die Professional- und Enterprise-Editionen von Visual Basic auch ActiveX-Dokumente, ActiveX-Designer und Benutzersteuerelemente enthalten. Sie führen neue Modultypen mit unterschiedlichen Dateierweiterungen ein. Aus Codierungssicht sollten diese Module als Formularmodule behandelt werden.
Verwenden Sie den Code-Editor
Der Visual Basic-Code-Editor ist das Fenster, in dem der meiste Code geschrieben wird. Es ist wie eine hochspezialisierte Textverarbeitungssoftware mit vielen Funktionen, die das Schreiben von Visual Basic-Code erleichtern. Abbildung 5.4 zeigt das Fenster „Code Editor“.
Da Sie den Visual Basic-Code im Modul ausführen müssen, müssen Sie für jedes im „Projekt-Explorer“ ausgewählte Modul ein unabhängiges „Code-Editor“-Fenster öffnen. In jedem Modul ist der Code im Modul für jedes im Modul enthaltene Objekt in unabhängige Teile unterteilt, die dem Objekt entsprechen. Verwenden Sie die „Objektlistenbox“, um zwischen Teilen zu wechseln. In einem Formularmodul enthält die Liste einen allgemeinen Abschnitt, einen Abschnitt für das Formular selbst und einen Abschnitt für jedes Steuerelement, das das Formular enthält. Für Klassenmodule enthält die Liste einen allgemeinen Abschnitt und einen Klassenabschnitt; für Standardmodule wird nur ein allgemeiner Abschnitt angezeigt.
Jeder Codeabschnitt kann mehrere unterschiedliche Prozeduren enthalten, auf die über das Prozedurlistenfeld zugegriffen werden kann. Die Prozedurliste des Formularmoduls enthält einen separaten Abschnitt für jede Ereignisprozedur eines Formulars oder Steuerelements. Die Prozessliste des Label-Steuerelements umfasst beispielsweise das Change-Ereignissegment, das Click-Ereignissegment, das DblClick-Ereignissegment usw. Klassenmodule zählen nur die Ereignisprozeduren der Klasse selbst auf – Initialisierung und Beendigung. Das Standardmodul zählt keine Ereignisprozeduren auf, da das Standardmodul keine Ereignisse unterstützt.
Die Prozedurliste des allgemeinen Abschnitts des Moduls enthält nur den einzigen Abschnitt – den Deklarationsabschnitt, in dem Variablen, Konstanten und DLL-Deklarationen auf Modulebene platziert werden. Wenn Sie Unterprozeduren oder Funktionsprozeduren zu einem Modul hinzufügen, werden diese Prozeduren zum Prozedurlistenfeld unterhalb des Deklarationsabschnitts hinzugefügt.
Im Code-Editor-Fenster stehen zwei verschiedene Codeansichten zur Verfügung. Sie können jeweils einen Prozess anzeigen oder alle Prozesse in einem Modul, durch Linien voneinander getrennt, anzeigen (wie in Abbildung 5.4 dargestellt). Um zwischen den beiden Ansichten zu wechseln, verwenden Sie die Schaltfläche „Ansichtsauswahl“ in der unteren linken Ecke des Editorfensters.
Autovervollständigungscodierung
Visual Basic kann Anweisungen, Eigenschaften und Parameter automatisch ausfüllen, was das Schreiben von Code komfortabler macht. Während Sie Code eingeben, listet der Editor entsprechende Auswahlmöglichkeiten, Anweisungen oder Funktionsprototypen oder -werte auf. Der Zugriff erfolgt über den Befehl „Optionen“ im Menü „Extras“. Auf der Registerkarte „Editor“ des Dialogfelds „Optionen“ sind Optionen verfügbar, die bestimmen, ob Einstellungswerte für einzelne Codes zugelassen oder deaktiviert werden sollen.
Wenn Sie einen Steuerelementnamen in den Code eingeben, hebt die Option „Eigenschaften von automatischen Listenmitgliedern“ das Dropdown-Eigenschaftenblatt des Steuerelements hervor (Abbildung 5.5). Durch Eingabe der ersten paar Buchstaben des Attributnamens wird der Name aus der Tabelle ausgewählt und durch Drücken der Tabulatortaste wird die Eingabe abgeschlossen. Diese Option ist sehr hilfreich, wenn Sie nicht sicher sind, welche Eigenschaften ein bestimmtes Steuerelement hat. Selbst wenn Sie die Funktion „Automatische Mitgliederliste“ deaktivieren, können Sie diese Funktion weiterhin mit der Tastenkombination STRG J nutzen.
Die Funktion „Auto Quick Info“ zeigt die Syntax von Anweisungen und Funktionen an (Abbildung 5.6). Nach Eingabe einer gültigen Visual Basic-Anweisung oder eines Funktionsnamens wird die Syntax direkt unter der aktuellen Zeile angezeigt und der erste Parameter wird fett angezeigt. Nach Eingabe des ersten Parameterwerts erscheint der zweite Parameter erneut, ebenfalls in Fettschrift. Die „Automatische Schnellauskunft“ kann auch über die Tastenkombination STRG I abgerufen werden.
Lesezeichen
Lesezeichen können im Code-Editor verwendet werden, um bestimmte Codezeilen zu markieren, sodass Sie später problemlos darauf zurückgreifen können. Das Ein- und Ausschalten von Lesezeichen sowie Befehle zum Navigieren zu vorhandenen Lesezeichen erhalten Sie über die Menüelemente „Bearbeiten“, „Lesezeichen“ oder über die Symbolleiste „Bearbeiten“.
Weitere Informationen Ausführlichere Informationen zur Verwendung von Tastenkombinationen zur Verwendung verschiedener Funktionen des Code-Editor-Fensters finden Sie unter „Tastenkombinationen für das Code-Fenster“.
Codierungsgrundlagen
In diesem Abschnitt werden die Mechanismen des Codeschreibens vorgestellt, darunter das Umbrechen und Zusammenführen von Codezeilen, das Hinzufügen von Kommentaren, die Verwendung von Zahlen und die Benennungskonventionen von Visual Basic.
Teilen Sie eine einzeilige Anweisung in mehrere Zeilen auf
Sie können im Codefenster Zeilenfortsetzungszeichen (ein Leerzeichen gefolgt von einem Unterstrich) verwenden, um lange Anweisungen in mehrere Zeilen aufzuteilen. Durch die Verwendung von Zeilenfortsetzungszeichen wird der Code sowohl am Computer als auch in gedruckter Form besser lesbar. Im Folgenden wird das Zeilenfortsetzungszeichen (_) verwendet, um den Code in mehrere Zeilen zu unterteilen:
Data1.RecordSource=_
SELECT*FROMTitles,Publishers_
&WHEREPublishers.PubId=Titles.PubID_
&ANDPublishers.State='CA'
In derselben Zeile können nach dem Zeilenfortsetzungszeichen keine Kommentare hinzugefügt werden. Es gibt einige Einschränkungen hinsichtlich der Verwendung von Zeilenfortsetzungszeichen.
Kombinieren Sie mehrere Anweisungen in derselben Zeile
Normalerweise gibt es eine Visual Basic-Anweisung in einer Zeile ohne Anweisungsabschlusszeichen, Sie können jedoch zwei oder mehr Anweisungen in derselben Zeile platzieren, indem Sie sie durch einen Doppelpunkt (:) trennen.
Text1.Text=Hallo:Red=255:Text1.BackColor=
Rot
Um das Lesen des Codes zu erleichtern, ist es jedoch besser, eine Anweisung pro Zeile einzufügen.
Weitere Informationen finden Sie in Anhang A, „Visual Basic-Spezifikationen, Einschränkungen und Dateiformat“.
Fügen Sie Ihrem Code Kommentare hinzu
Beim Lesen der Beispiele in diesem Handbuch werden Sie häufig auf das Kommentarzeichen (') stoßen. Dieses Symbol weist Visual Basic an, zu ignorieren, was auf das Symbol folgt. Hierbei handelt es sich um Kommentare im Code-Snippet, die sowohl dem Entwickler als auch anderen Programmierern, die den Quellcode später möglicherweise untersuchen, hilfreich sein sollen. Zum Beispiel:
„Das ist von der linken Seite des Bildschirms.“
'Kommentar starten.
Text1.Text=Hallo! 'Geben Sie es in das Textfeld ein
'Willkommen.
Kommentare können in derselben Zeile wie die Anweisung stehen, nach der Anweisung geschrieben werden oder eine ganze Zeile einnehmen. Der obige Code veranschaulicht beide Situationen. Denken Sie daran, dass ein Kommentar nicht auf ein Zeilenfortsetzungszeichen in derselben Zeile folgen darf.
Hinweis Sie können einem Codeblock Kommentarsymbole hinzufügen oder daraus entfernen, indem Sie zwei oder mehr Codezeilen auswählen und in der Symbolleiste „Bearbeiten“ auf die Schaltfläche „Kommentarblock“ oder „Kommentarblock entfernen“ klicken.
Zahlensysteme verstehen
Die meisten Werte in diesem Dokument sind dezimal (Basis 10). Manchmal ist es jedoch bequemer, Hexadezimalzahlen (Basis 16) oder Oktalzahlen (Basis 8) zu verwenden. Visual Basic verwendet das Präfix &H zur Darstellung von Hexadezimalzahlen und &O zur Darstellung von Oktalzahlen. Die folgende Tabelle veranschaulicht die dezimale, oktale und hexadezimale Darstellung derselben Zahl.
Normalerweise ist es nicht notwendig, das hexadezimale oder oktale Zahlensystem zu kennen, da Computer mit Zahlen in beiden Systemen arbeiten können. Einige Zahlensysteme eignen sich jedoch für bestimmte Aufgaben besser als andere als andere, beispielsweise für die Verwendung von Hexadezimalzahlen zum Festlegen der Farbe von Bildschirmen und Steuerelementen.
VisualBasic-Namenskonventionen
Beim Schreiben von Visual Basic-Code deklarieren und benennen Sie viele Elemente (Unter- und Funktionsprozeduren, Variablen, Konstanten usw.). Die Namen von Prozeduren, Variablen und Konstanten, die im Visual Basic-Code deklariert werden, müssen diesen Regeln folgen:
1. Sie müssen mit einem Buchstaben beginnen.
2. Sie dürfen keine eingebetteten Punkte oder Typdeklarationszeichen (Sonderzeichen, die Datentypen angeben) enthalten.
3. Sie dürfen 255 Zeichen nicht überschreiten. Die Namen von Steuerelementen, Formularen, Klassen und Modulen dürfen nicht länger als 40 Zeichen sein.
4. Sie dürfen nicht denselben Namen wie eingeschränkte Schlüsselwörter haben.
Eingeschränkte Schlüsselwörter sind von Visual Basic verwendete Wörter und Teil der Sprache. Dazu gehören vordefinierte Anweisungen (wie If und Loop), Funktionen (wie Len und Abs) und Operatoren (wie Or und Mod).
Ausführliche Informationen Ausführlichere Informationen zur Schlüsselworttabelle finden Sie im „Visual Basic 6.0 Language Reference Manual“.
Formulare und Steuerelemente können denselben Namen wie eingeschränkte Schlüsselwörter haben. Beispielsweise können Sie einen Regelkreis benennen. Das Steuerelement kann jedoch nicht auf die übliche Weise im Code referenziert werden, da Visual Basic davon ausgeht, dass „Loop“ das Schlüsselwort bedeutet. Der folgende Code führt beispielsweise zu einem Fehler.
Loop.Visible=True 'Fehler.
Um auf Formulare oder Steuerelemente zu verweisen, die denselben Namen wie ein eingeschränktes Schlüsselwort haben, müssen Sie sie qualifizieren oder in eckige Klammern [] setzen. Der folgende Code führt beispielsweise nicht zu einem Fehler.
MyForm.Loop.Visible=True 'Formularnamen verwenden
„Qualifizieren Sie es.
[Loop].Visible=True 'eckige Klammern
„Es hat funktioniert.
Eckige Klammern können auf diese Weise beim Verweisen auf Formulare und Steuerelemente verwendet werden, jedoch nicht bei der Variablendeklaration oder Prozedurdefinition, wenn der Variablen- oder Prozedurname mit dem eingeschränkten Schlüsselwort übereinstimmt. Eckige Klammern können auch verwendet werden, um Visual Basic zu zwingen, von anderen Typbibliotheken bereitgestellte Namen zu akzeptieren, die mit eingeschränkten Schlüsselwörtern in Konflikt stehen.
Beachten Sie , dass die Eingabe von eckigen Klammern ermüdend ist. Daher ist es wünschenswert, weniger eingeschränkte Schlüsselwörter für Formular- oder Steuerelementnamen zu verwenden. Wenn jedoch eine neue Version von Visual Basic neue Schlüsselwörter definiert, die mit vorhandenen Formularen oder Steuerelementen in Konflikt stehen, können Sie diese Technik verwenden, wenn Sie Ihren Code aktualisieren, um die neue Version zu verwenden. _
->