Objekt erstellen
Der einfachste Weg, ein Objekt zu erstellen, besteht darin, auf das Steuerelement in der Toolbox zu doppelklicken. Um jedoch alle in Visual Basic und anderen Anwendungen verfügbaren Objekte optimal nutzen zu können, können Sie die Programmierfunktionen von Visual Basic nutzen, um Objekte zur Laufzeit zu erstellen.
1. Objektreferenz mit Objektvariable erstellen
2. Verwenden Sie Klassenmodule, um Ihre eigenen Objekte „von Grund auf“ zu erstellen.
3. Erstellen Sie Ihre eigene Sammlung mithilfe von Sammlungsobjekten
Einzelheiten zum Zugriff auf Objekte finden Sie in anderen Kapiteln. Die Funktionen „CreateObject“ und „GetObject“ werden beispielsweise in Kapitel 10, „Programmieren mit Komponenten“, besprochen.
Verwenden Sie Objektvariablen
Variablen können nicht nur Werte speichern, sondern auch auf Objekte verweisen. Genau wie beim Zuweisen eines Werts zu einer Variablen können Sie einer Variablen aus den gleichen Gründen ein Objekt zuweisen:
1. Variablennamen sind in der Regel kürzer und leichter zu merken als die darin enthaltenen Werte (oder in diesem Fall die Objekte, auf die sie verweisen).
2. Beim Ausführen von Code sollten Variablen geändert werden, um auf andere Objekte zu verweisen.
3. Der Verweis auf die Variable, die das Objekt enthält, ist effizienter als der wiederholte Verweis auf das Objekt selbst.
Die Verwendung von Objektvariablen ist dasselbe wie die Verwendung regulärer Variablen, außer dass es einen zusätzlichen Schritt gibt, bei dem das Objekt der Variablen zugewiesen wird:
4. Deklarieren Sie zunächst die Variablen:
DimvariableAsclass
5. Weisen Sie dann das Objekt der Variablen zu:
Setvariable=Objekt
Objektvariablen deklarieren
Die Methode zum Deklarieren von Objektvariablen ist dieselbe wie für die Deklaration anderer Variablen und verwendet Dim, ReDim, Static, PRivate und Public. Der einzige Unterschied besteht in den optionalen Schlüsselwort- und Klassenparametern New, die später in diesem Kapitel vorgestellt werden. Die Syntax lautet:
{Dim|ReDim|Static|Private|Public}variableAs[New]class
Sie können beispielsweise eine Objektvariable mit dem Namen frmMain deklarieren, die auf ein Formular in Ihrer Anwendung verweist:
DimFormVarAsNewfrmMain 'Deklarieren Sie einen Typ als frmMain
' Objektvariable.
Sie können auch eine Objektvariable deklarieren, die auf ein beliebiges Formular in Ihrer Anwendung verweist:
DimanyFormAsForm 'Allgemeine Formularvariablen.
Ebenso können Sie eine Objektvariable deklarieren, die auf jedes Textfeld in Ihrer Anwendung verweisen kann:
DimanyTextAsTextBox 'kann auf jedes Textfeld verweisen
' (aber nur ein Textfeld).
Sie können auch eine Objektvariable deklarieren, die auf jede Art von Steuerelement verweisen kann:
DimanyControlAsControl 'Allgemeine Steuervariablen.
Beachten Sie, dass Sie eine Formularvariable deklarieren können, die auf ein bestimmtes Formular in Ihrer Anwendung verweist, Sie können jedoch keine Steuervariable deklarieren, die auf ein bestimmtes Steuerelement verweist. Sie können eine Steuervariable deklarieren, die auf einen bestimmten Steuerelementtyp (z. B. eine TextBox oder eine ListBox) verweist, jedoch nicht auf ein bestimmtes Steuerelement dieses Typs (z. B. txtEntry oder List1). Variablen dieses Typs können jedoch bestimmte Steuerelemente zugewiesen werden. Ein Formular mit einem Listenfeld lstSample könnte beispielsweise wie folgt codiert werden:
DimobjDemoAsListBox
SetobjDemo=lstSample
Zuweisungsobjektvariable
Verwenden Sie die Set-Anweisung, um das Objekt der Objektvariablen zuzuweisen:
Setvariable=Objekt
Wann immer Sie möchten, dass eine Objektvariable auf ein Objekt verweist, können Sie die Set-Anweisung verwenden.
Manchmal können Sie Objektvariablen, insbesondere Steuervariablen, verwenden, um den von Ihnen eingegebenen Code direkt zu verkürzen. Der Originalcode sieht beispielsweise so aus:
IffrmAccountDisplay!txtAccountBalance.Text<0Then
frmAccountDisplay!txtAccountBalance.BackColor=0
frmAccountDisplay!txtAccountBalance.ForeColor=255
EndIf
Wenn Sie Steuervariablen verwenden, kann Ihr Programm erheblich verkürzt werden:
DimBalAsTextBox
SetBal=frmAccountDisplay!txtAccountBalance
IfBal.Text<0Then
Bal.BackColor=0
Bal.ForeColor=255
EndIf
Spezifische Objekttypen im Vergleich zu allgemeinen Objekttypen
Eine bestimmte Objektvariable muss auf einen bestimmten Objekt- oder Klassentyp verweisen. Eine bestimmte Formularvariable kann nur auf ein Formular in der Anwendung verweisen (obwohl sie in einer von vielen Instanzen dieses Formulars referenziert werden kann). Ebenso kann eine bestimmte Steuervariable nur auf einen bestimmten Steuerelementtyp in der Anwendung verweisen, beispielsweise auf eine TextBox oder eine ListBox. Sehen Sie sich ein Beispiel an, öffnen Sie ein neues Projekt und platzieren Sie ein Textfeld im Formular. Fügen Sie dem Formular den folgenden Code hinzu:
PrivateSubForm_Click()
DimanyTextAsTextBox
SetanyText=Text1
anyText.Text=Hallo
EndSub
Führen Sie die Anwendung aus und klicken Sie auf das Formular. Die Eigenschaft „Text“ des Textfelds ändert sich in „Hallo“.
Allgemeine Objektvariablen können auf einen von mehreren spezifischen Objekttypen verweisen. Beispielsweise kann eine allgemeine Formularvariable auf jedes Formular in der Anwendung verweisen; eine allgemeine Steuervariable kann auf jedes Steuerelement in jedem Formular in der Anwendung verweisen. Sehen Sie sich ein Beispiel an: Öffnen Sie ein neues Projekt und platzieren Sie mehrere Frame-, Label- und CommandButton-Steuerelemente in beliebiger Reihenfolge auf dem Formular. Fügen Sie dem Formular den folgenden Code hinzu:
PrivateSubForm_Click()
DimanyControlAsControl
SetanyControl=Form1.Controls(3)
anyControl.Caption=Hallo
EndSub
Führen Sie das Programm aus und klicken Sie auf das Formular. Der Titel des dritten Steuerelements, das Sie gerade in das Formular eingefügt haben, ändert sich in „Hallo“.
In Visual Basic gibt es vier allgemeine Objekte:
Allgemeine Objektvariablen sind nützlich, wenn zur Laufzeit nicht bekannt ist, ob die Variable auf ein Objekt eines bestimmten Typs verweist. Wenn Sie beispielsweise Code schreiben möchten, der auf jedem Formular in Ihrer Anwendung funktioniert, müssen Sie allgemeine Formularvariablen verwenden.
Beachten Sie , dass es nicht notwendig ist, den allgemeinen MDIForm-Typ zu verwenden, da es in der Anwendung nur ein MDI-Formular geben kann. Wann immer Sie eine Formularvariable deklarieren müssen, die auf ein MDI-Formular verweist, können Sie anstelle des allgemeinen MDIForm-Typs einen bestimmten MDIForm-Typ (entweder MDIForm1 oder einen beliebigen Namen, den Sie in der Name-Eigenschaft des MDI-Formulars angeben) verwenden. Tatsächlich sollten Sie immer einen bestimmten MDIForm-Typ verwenden, da Visual Basic die Eigenschaften und Methoden ermitteln kann, die auf einen bestimmten Formulartyp verweisen, bevor die Anwendung ausgeführt wird.
Der allgemeine MDIForm-Typ wird nur der Vollständigkeit halber bereitgestellt. In zukünftigen Versionen von Visual Basic wird es nützlich sein, mehrere MDI-Formulare in einer einzigen Anwendung zu haben.
Form als Objekt
Formulare werden am häufigsten zum Erstellen von Anwendungsschnittstellen verwendet, es handelt sich jedoch häufig auch um Objekte, die von anderen Modulen in der Anwendung aufgerufen werden. Formulare stehen in engem Zusammenhang mit den Unterrichtsmodulen. Der Hauptunterschied zwischen den beiden besteht darin, dass Formulare visuelle Objekte sind, während Klassenmodule keine visuelle Schnittstelle haben.
Fügen Sie benutzerdefinierte Methoden und Eigenschaften hinzu
Benutzerdefinierte Methoden und Eigenschaften können dem Formular hinzugefügt und von anderen Modulen in der Anwendung aus aufgerufen werden. Um neue Methoden für ein Formular zu erstellen, fügen Sie eine mit Public deklarierte Prozedur hinzu.
'Methode zum Anpassen von Form1.
PublicSubLateJobsCount()
.
. '<Anweisungen>
.
EndSub
Die LateJobsCount-Prozedur kann mit der folgenden Anweisung von anderen Modulen aus aufgerufen werden:
Form1.LateJobsCount
Das Erstellen neuer Eigenschaften für ein Formular ist so einfach wie das Deklarieren einer öffentlichen Variablen im Formularmodul:
PublicIDNumberAsInteger
Die folgenden zwei Anweisungen können verwendet werden, um den IDNumber-Wert von Form1 von anderen Modulen festzulegen und zurückzugeben:
Form1.IDNumber=3
Text1.Text=Form1.IDNumber
Sie können die Property-Prozedur auch verwenden, um benutzerdefinierte Eigenschaften zu einem Formular hinzuzufügen.
Details Kapitel 9, „Programmieren mit Objekten“, enthält ausführliches Material zur Property-Prozedur.
Beachten Sie, dass Sie die Variablen oder benutzerdefinierten Methoden des Formulars aufrufen können, ohne das Formular zu laden, und dass Sie auch die benutzerdefinierten Eigenschaften des Formulars festlegen können. Dadurch können Sie Code über das Formular ausführen, ohne ihn in den Speicher zu laden. Ebenso wird das Formular nicht geladen, wenn auf ein Steuerelement verwiesen wird, ohne auf dessen Eigenschaften oder Methoden zu verweisen.
Verwenden Sie das Schlüsselwort New
Verwenden Sie das Schlüsselwort New, um ein neues Objekt zu erstellen, das als das durch seine Klasse definierte Objekt behandelt wird. New kann zum Erstellen von Instanzen von Sammlungen, Formularen und Klassen verwendet werden, die in Klassenmodulen definiert sind.
Verwenden Sie das Schlüsselwort New in einem Formular
Zur Entwurfszeit erstellte Formulare sind Klassen. Neue Instanzen dieser Klasse können mit dem Schlüsselwort New erstellt werden. Um diesen Prozess in Aktion zu sehen, zeichnen Sie eine Befehlsschaltfläche und mehrere andere Steuerelemente in das Formular. Legen Sie im Fenster „Eigenschaften“ die Eigenschaft „Name“ des Formulars auf „Beispiel“ fest. Fügen Sie den folgenden Code in die Click-Ereignisprozedur der Befehlsschaltfläche ein:
DimxAsNewSample
x.Anzeigen
Führen Sie die Anwendung aus und klicken Sie mehrmals auf die Befehlsschaltfläche. Schieben Sie das vorderste Formular zur Seite. Da es sich bei dem Formular um eine Klasse mit einer visuellen Schnittstelle handelt, sind zusätzliche Kopien sichtbar. Jedes Formular verfügt über dieselben Steuerelemente an denselben Stellen, an denen das Formular entworfen wurde.
Beachten Sie, dass Sie statische oder öffentliche Variablen anstelle lokaler Variablen verwenden müssen, damit Formularvariablen und Instanzen geladener Formulare immer vorhanden sind.
Sie können das Schlüsselwort New auch mit der Set-Anweisung verwenden. Bitte probieren Sie den Code in der Click-Ereignisprozedur der Befehlsschaltfläche aus:
DimfAsForm1
Setf=NewForm1
f.Caption=Hallo
f.Zeigen
Die Verwendung des Schlüsselworts New mit der Set-Anweisung beschleunigt die Ausführung, daher wird diese Methode empfohlen.
Verwenden Sie das Schlüsselwort New mit anderen Objekten
Mit dem Schlüsselwort New können Sie Sammlungen und Objekte aus Klassen erstellen, die in einem Klassenmodul definiert sind. Nutzen Sie das folgende Beispiel, um diesen Arbeitsprozess zu veranschaulichen.
Dieses Beispiel veranschaulicht, wie das Schlüsselwort New eine Instanz einer Klasse erstellt. Öffnen Sie ein neues Projekt und zeichnen Sie ein CommandButton-Steuerelement auf Form1. Wählen Sie im Menü „Projekt“ den Befehl „Klassenmodul hinzufügen“, um dem Projekt ein Klassenmodul hinzuzufügen. Legen Sie die Name-Eigenschaft des Klassenmoduls auf ShowMe fest.
Der folgende Code in Form1 erstellt eine neue Instanz der Klasse ShowMe und ruft eine im Klassenmodul enthaltene Prozedur auf.
PublicclsNewAsShowMe
PrivateSubCommand1_Click()
SetclsNew=NewShowMe
clsNew.ShowFrm
EndSub
Die ShowFrm-Prozedur im Klassenmodul erstellt eine neue Instanz der Klasse Form1, zeigt das Formular an und minimiert es dann.
SubShowFrm()
DimfrmNewAsForm1
SetfrmNew=NewForm1
frmNew.Show
frmNew.WindowState=1
EndSub
Um dieses Beispiel anzuwenden, führen Sie die Anwendung aus und klicken Sie mehrmals auf die Befehlsschaltfläche. Wenn jede neue Instanz der ShowMe-Klasse erstellt wird, wird auf dem Desktop ein minimiertes Formularsymbol angezeigt.
Weitere Informationen zur Verwendung von New zum Erstellen von Objekten finden Sie in Kapitel 10, „Programmieren mit Komponenten“.
Neue Keyword-Einschränkungen
In der folgenden Tabelle wird erläutert, was Sie mit dem Schlüsselwort New nicht tun können.
Geben Sie den Verweis auf das Objekt frei
Jedes Objekt beansprucht Speicher- und Systemressourcen. Es gehört zur guten Programmierpraxis, diese Ressourcen umgehend freizugeben, wenn das Objekt nicht mehr verwendet wird.
Verwenden Sie Entladen, um ein Formular oder Steuerelement aus dem Speicher zu entladen.
Verwenden Sie Nothing, um die von Objektvariablen belegten Ressourcen freizugeben. Verwenden Sie die Set-Anweisung, um der Objektvariablen Nothing zuzuweisen.
Weitere Informationen finden Sie in den Abschnitten „Unload Event“ und „Nothing“ im „Visual Basic 6.0 Language Reference Manual“.
Objekt an Prozedur übergeben
Objekte können in Visual Basic an Prozeduren übergeben werden. Im folgenden Codebeispiel wird davon ausgegangen, dass das Formular über ein CommandButton-Steuerelement verfügt:
PrivateSubCommand1_Click()
'Rufen Sie die Demo-Subroutine auf und übergeben Sie ihr das Formular.
DemoForm1
EndSub
PrivateSubDemo(xAsForm1)
„Zentrieren Sie das Formular auf dem Bildschirm.
x.Left=(Screen.Width-x.Width)/2
EndSub
Sie können ein Objekt per Referenz an einen Parameter übergeben und den Parameter dann innerhalb der Prozedur auf ein neues Objekt festlegen. Um dies in Aktion zu sehen, öffnen Sie das Projekt und fügen Sie ein zweites Formular ein. Platzieren Sie in jedes Formular ein Bildfeld. Die Attributeinstellungswerte, die geändert werden müssen, sind in der folgenden Tabelle aufgeführt:
Die Ereignisprozedur „Form1_Click“ ruft die Prozedur „GetPicture“ in Form2 auf und übergibt ihr ein leeres Bildfeld.
PrivateSubForm_Click()
Form2.GetPicturePicture1
EndSub
Der GetPicture-Prozess in Form2 weist die Picture-Eigenschaft des Bildfelds in Form2 dem leeren Bildfeld in Form1 zu.
PrivateobjXapictureBox
PublicSubGetPicture(xAsPictureBox)
'Weisen Sie den übergebenen Bildrahmen der Objektvariablen zu.
SetobjX=x
'Weisen Sie den Bildattributwert dem Bildfeld von Form1 zu.
objX.Picture=picture2.Picture
EndSub
Um dieses Beispiel anzuwenden, führen Sie das Programm aus und klicken Sie auf Form1. Das Symbol in Form2 wird im Bildfeld von Form1 angezeigt.
Details Die obigen Themen sollen einen Überblick über die Objekte geben. Weitere Einzelheiten finden Sie in Kapitel 9, „Programmieren mit Objekten“ und Kapitel 10, „Programmieren mit Komponenten“.
->