VB考试教程:使用对象集合

文章作者 100test 发表时间 2007:03:10 18:28:28
来源 100Test.Com百考试题网


五、使用对象集合

集合是一组相关的对象。

窗体上的对象都被存放于同一文件之中。而且VisualBasic将这些对象视为同一组的成员。在Visual Basic术语中,窗体上的整组对象被称为Controls(控件)集合。Controls(控件)集合是在你打开新窗体和为窗体添加对象而扩展它时自动创建的。每个窗体都有一个Controls(控件)集合。事实上,Visual Basic拥有好几个标准的对象集合供你在编写程序时使用。在这里,我们将学习在使用任何集合时所需的基本技巧。

1、集合标记法

程序中的每个集合都具有自己的名称,这样你就可以在程序代码中作为一个独立单元引用这些集合。例如,包含窗体上的所有对象的集合被称为Controls(控件)集合。

因为在程序中可能有多个窗体,因而有多个Controls(控件)集合,这样,当在一个包含多个窗体的程序中使用Controls(控件)集合时,需要加上窗体的名字。例如,要引用Form1(窗体1)上的Controls(控件)集合,应该在代码中使用如下名称:

Form1.Controls

在该标记法中,Form1对象名和Controls(控件)关键字之间的句点使Controls(控件)看上去好象是一种属性,但是Visual Basic程序员将Controls(控件)集合描述为包含在Form1对象中的一个对象。这两种对象之间的关系或者说等级有点儿象路径名中的文件夹,这在后面开始使用应用对象时,将再次看到这种标记法。

除了在程序中可以使用对象和集合以外,Visual Basic还允许你浏览你的系统,寻找其它应用对象并在程序中加以运用。我们将在学习如何使用Visual Basic Object Browser(对象浏览器)时再次探讨这个问题。

2、引用集合中的对象

你可以单独或成组地引用集合中的对象。

(1)单独引用集合中的对象

引用集合中的对象,或者说引用集合中的个别成员有两种方法:

第一种方法就是通过直接在赋值语句中使用对象名来加以引用。例如,语句:

Form1.Controls!Label1.Caption = "Employees"

单独列出了Controls(控件)集合中的Label1对象,并将其标题属性设置为“Employees”。惊叹号(!)用来连接Label1对象和Controls(控件)集合。尽管该语句对编译程序来说可能有点儿冗长拗口了,但它却准确地反映出集合中的层次。

第二种处理集合中对象的方法是指定该对象在对象组中的索引位置。VisualBasic按照对象创建的逆向顺序存储集合对象,因此你可以使用对象的“创建顺序”单独引用该对象,或者使用循环来检查数个对象。例如,要想识别窗体中最后创建的对象,你可以指定下标0,比如下面的示例:

Form1.Controls(0).Caption = "Business"

该语句将窗体中最后一个对象的Caption(标题)属性设置为“Business”(倒数第二创建的对象下标为1,倒数第三创建的对象下标为2,等等。)

(2)成组地引用集合中的对象

这一点将在下面介绍。

3、编写For Each...Next循环

For Each...Next循环设计用来处理集合。

使用集合最大优点是可以有效地处理对象组。尽管你能够引用集合中的单个成员,但是使用集合中对象的最有用方法是将它们作为一组来处理。例如,你可以同时对整个对象集合进行显示、移动、排序、重命名或调整大小等等操作。

要处理这些任务,可以使用For Each...Next的循环逐个处理集合中的所有对象。For Each...Next循环与For...Next循环十分相似。当For Each...Next循环被用于控制集合时,它的语法如下:

For Each Control in FormName.Controls

process object

Next Control

其中:

Control是代表集合中当前对象的特殊变量,是对象型变量;

FormName是窗体名称,如Form1、Form2等;

循环体用于处理集合中的各个对象。例如,你可以修改集合中这些对象的Enabled、Left、Top、Caption或者Visible等属性,当然也可以在列表框中列出每个对象的名称。

例如,要同时移动窗体上的所有控件,见下面介绍。

4、移动一组对象

例:使用Controls(控件)集合同时将一组对象从窗体的左侧移动到右侧。

该程序使用For Each...Next循环在用户每次单击“Command1”按钮时移动对象。

在窗体上添加几个控件,其中包含Command1命令按钮,键入如下代码:

Option Explicit

Dim Ctrl As Object
Private Sub Command1_Click()
For Each Ctrl In Controls
Ctrl.Left = Ctrl.Left 200
Next Ctrl
End Sub

说明:使用For Each...Next循环来调整每个对象的Left属性,这样它们就能够成组地移动。

用户每次单击“Command1”按钮时,该For Each...Next循环都会逐个检查Controls(控件)集合中的对象,并将它们向右移动200 twip(要向左移动200 twip应减去200)。Ctrl变量是集合中当前对象的“替身”,它的属性值与它所代表的对象的属性值相同。在该循环中,对Left属性值的调整控制了对象相对于窗体左部的位置。


相关文章


VB考试教程:运算符与表达式
VB考试教程:VisualBasic中的过程控制
VB考试教程:使用对象集合
VB考试教程:数组
VB考试教程:常见标准函数
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛