运行应用程序并单击窗体。文本框的 Text 属性将变成 "Hello"。
一般对象变量可在多种特定对象类型中引用其中一种。例如,一般窗体变量可引用应用程序中的任何窗体;一般控件变量可引用应用程序中任何窗体上的任何控件。请看一例,打开新的工程并在窗体中按任意顺序放置若干 Frame、Label 和 CommandButton 控件。将下列代码添加到窗体中:
Private Sub Form_Click ()
Dim anyControl As Control
Set anyControl = Form1.Controls (3)
anyControl.Caption = "Hello"
End Sub
运行程序并单击窗体。刚才放入窗体中的第三个控件的标题将变成"Hello"。
Visual Basic 中有四种一般对象:
在不知道变量运行时是否引用特定类型的对象时,一般对象变量是很有用的。例如,如果要书写代码,并使之在应用程序的任何窗体中都可操作,则必须使用一般窗体变量。
注意 由于应用程序中只能有一个 MDI 窗体,因此不必使用一般的MDIForm 类型。无论何时,一旦需要声明引用 MDI 窗体的窗体变量,就可用特定的 MDIForm 类型(或者是 MDIForm1,或者是对 MDI窗体的 Name 属性指定的任何名称),而不用一般的 MDIForm 类型。实际上,由于在运行应用程序前,Visual Basic 就能够决定引用特定窗体类型的属性和方法,因此总应使用特定的 MDIForm 类型。
只是出于完整性的考虑才提供一般的 MDIForm 类型;在 Visual Basic 的今后版本中,单个应用程序中可以拥有多个 MDI 窗体,这将是非常有用的。
作为对象的窗体
窗体最常用到的是构造应用程序界面,但也常常是应用程序中其它模块调用的对象。窗体与类模块关系密切。两者之间的主要区别在于,窗体是可视对象,而类模块却没有可视界面。
添加自定义方法和属性
可对窗体添加自定义方法和属性,并可从应用程序中的其它模块访问它们。为了创建窗体的新方法,请添加用 Public 声明的过程。
'自定义 Form1 的方法。
Public Sub LateJobsCount ()
.
. '
.
End Sub
可用下面这个语句从其它模块调用 LateJobsCount 过程:
Form1.LateJobsCount
创建窗体的新属性就像在窗体模块中声明一个公用变量那样简单:
Public IDNumber As Integer
可用下面两个语句从其它模块设置和返回 Form1 的 IDNumber 值:
Form1.IDNumber = 3
Text1.Text = Form1.IDNumber
也可用 Property 过程向窗体添加自定义属性。
详细信息 第九章“用对象编程”提供了 Property 过程的详细材料。
注意 不必加载窗体就可调用窗体的变量或自定义方法,还可设置窗体的自定义属性。于是,不必将窗体加载到内存就可运行有关窗体的代码。同样,引用控件而不引用其属性或方法时也不会加载窗体。
使用 New 关键字
用 New 关键字创建新对象,这个对象被视为它的类所定义的对象。可用New 创建集合、窗体的实例以及类模块中定义的类。
在窗体上使用 New 关键字
在设计时创建的窗体是类。可用 New 关键字创建这个类的新实例。为了看到这一工作过程,请在窗体上画出一个命令按钮和其它几个控件。在“属性”窗口中将窗体的 Name 属性设置成 Sample。在命令按钮的 Click 事件过程中添加下列代码:
Dim x As New Sample
x.Show
运行应用程序,并单击命令按钮数次。把最前面的窗体移到一边。因为窗体是具有可视界面的类,所以可看到附加副本。每个窗体在相同位置上都有相同控件,而且这些位置也正是窗体在设计时的位置。
注意 要使窗体变量和已加载窗体的实例一直存在,请用 Static 或 Public变量,而不要用局部变量。
也可将 New 关键字与 Set 语句并用。请试用命令按钮的 Click 事件过程中的代码:
Dim f As Form1
Set f = New Form1
f.Caption = "hello"
f.Show
