摘 要 本文主要介绍了Visual Basic中的基本控件的使用。首先对有关控件的概念作了一个概括性的介绍,通过一个具体实例详细的讲解了一些控件的用法。
关键词 控件 ActiveX控件
在Visual Basic中,控件是构造应用程序用户界面的图形化的工具。在进行程序设计时,它占据重要的地位,因此掌握控件的使用对于Visual Basic程序员来说是必须的。
Visual Basic中的控件不仅可提供一些事件过程,供程序员来编写代码,而且程序员可通过设置其自身的属性来为应用程序提供个性化的图形界面。
控件可分为三类:
1.基本控件
这些控件我们在工具栏可看见,它们在Visual Basic的.EXE文件中,没有独立的文件。如在上一讲我们使用过的命令控件,标签控件。
2.ActiveX控件
用户可以通过向工具箱中添加或删除ActiveX控件。ActiveX控件文件的扩展名为.ocx。
3.可插入的对象
Visual Basic还为用户提供了可在应用程序中插入如Execl工作表对象的功能。用户可将这样的对象加入到工具箱中。
在本讲中,我们将主要就具体实例来讲解如何使用一些常用的控件。
一、控件功能
Visual Basic为用户提供了20个基本控件,其用途主要涉及信息输入/输出、操作选择、文件系统管理、绘图和定时等。在表1中我们列举了Visual Basic基本控件的图标、名称、类名和功能简介。
表1 工具箱中的基本控件
图标 控件名 类名 描述
图片框控件 PictureBox 可以显示来自位图、图标或者Windows图元文件,以及来自增强的元文件、JPEG 或 GIF 文件的图形,也可显示文本或者充任其它控件的可视容器。如果控件不足以显示整幅图象,则裁剪图象以适应控件的大小
标签控件 Label 图形控件,可以显示用户不能直接改变或不可交互操作的文本
文本框控件 TextBox 也称作编辑字段或者编辑控件,显示设计时用户所输入的、或运行时在代码中赋予控件的信息
框架控件 Frame 为控件提供可标识的分组。Frame 可以在功能上进一步分割一个窗体
命令控件 CommandButton 可以开始、中断或者结束一个进程。单击后,将响应用户的Click事件
复选框控件 CheckBox 选择控件后,该控件将显示 X,而清除 CheckBox 控件后, X 消失。该控件可用来提供 True/False 或者 Yes/No 选项。组中可以使用 CheckBox 控件显示多项选择,从而可选择其中的一项或多项。也可以通过对Value属性编程设置 CheckBox 的值
选项按钮控件 OptionButton 选项按钮控件与其它选项按钮控件可组成选项组,显示一个或多个可以打开或者关闭的选项
组合框控件 ComboBox 将TextBox控件和ListBox控件的特性结合在一起。既可以在控件的文本框部分输入信息,也可以在控件的列表框部分选择一项
列表框控件 ListBox 显示项目列表,从其中可以选择一项或多项。如果项目总数超过了可显示的项目数,就自动在 ListBox 控件上添加滚动条
水平滚动控件 HScrollBar 在项目列表很长或者信息量很大时,可以使用滚动条来提供简便的定位。它还可以模拟当前所在的位置。滚动条可以作为输入设备,或者速度、数量的指示器来使用。例如,可以用它来控制计算机游戏的音量,或者查看定时处理中已用的时间
垂直滚动控件 VScrollBar 同上
定时器控件 Timer 可以有规律地隔一段时间执行一次定时器事件
驱动器控件 DriverListBox 显示用户系统中所有有效磁盘驱动器的列表。可以创建对话框,通过它从任一可用驱动器的磁盘文件列表中打开文件
目录列表框控件 DirListBox 显示分层的目录列表
文件列表框控件 FileListBox 显示所选择文件类型的文件列表
形状控件 Shape 图形控件,显示矩形、正方形、椭圆、圆形、圆角矩形或者圆角正方形
线性控件 Line 图形控件,显示水平线、垂直线或者对角线
图像框控件 Image 用来显示图形。Image 控件可以显示来自位图、图标或元文件 的图形,也可以显示增强的元文件、JPEG 或 GIF文件。单击时,类似命令按钮
数据控件 Data 与数据库相连,可在窗体上显示数据库中的数据
OLE容器控件 OLE 将其它的Windows程序的数据,如Excel、Word等,嵌入Visual Basic程序
二、实例
当然,我们不可能对每一个控件都详细的讲解它的使用。下面,我们通过一个例子来讲解如何使用控件。对于在例子中没有讲到的控件的使用,我们可以仿照例子中的控件的使用,并且通过使用MSDN的帮助来掌握。
在这个例子中,我们实现的是打开某个图片文件和最基本的数据库操作,即打开一个数据库,并显示数据库中的数据。在这里我们使用了数据控件,文本框控件,标签控件,命令控件,驱动器控件,目录列表框控件,文件列表框控件和图像框控件。
在运行程序后,我们首先看到的主界面如图1所示。
图1 控件演示程序界面
当我们单击“打开图片”时,我们将看到如图2所示的界面。在这里,我们通过选择图片所在的驱动器、目录及需打开图片文件的名字。单击需打开的图片文件时,我们将在该窗体的右侧的图像框控件中看到该图片。当我们单击“退出”按钮时,我们将返回主界面。
图2 打开数据库窗口
在我们单击主界面的“打开数据库”按钮时,我们将打开一指定的数据库,如图3所示。在这里,我们可通过数据控件来实现记录直接的移动。在该窗体中,单击“退出”按钮,将返回主界面。
图3 数据库界面
在主界面窗体中单击“退出”按钮,则结束程序的运行。
现在,我们开始具体的讲解程序中所用到各个控件的使用方法。
第一步,我们创建应用程序的主界面,即图1。在上一讲里,我们已经介绍了如何创建一个应用程序以及使用命令控件,所以在这里我们就不再重复了。在该界面上我们使用了三个命令控件,需要修改的属性值如表2所示,其它属性采用默认值。
表2 对象属性值
对象 属性 设置值
Form1 Caption 控件演示程序
Command1 Caption 打开图片
Command2 Caption 打开数据库
Command3 Caption 退出
Command1控件实现打开某个图片的功能。在这里,打开图片在Form2中实现。所以,我们要在单击“打开图片”按钮后,显示Form2,并同时将Form1隐藏。实现上述功能,我们需在Command1_click事件程序中加入下列代码:
Private Sub Command1_Click()
Form1.Hide
Form2.Show
End Sub
其中Hide与Show方法是窗体用以隐藏或显示Form 对象,但不能使其卸载。
Command2控件实现打开某个数据库的功能。在这里,打开特定数据库在Form3中实现。所以,我们要在单击“打开数据库”按钮后,显示Form3,并同时将Form1隐藏。实现上述功能,我们需在Command2_click事件程序中加入下列代码:
同样,在Command2_click事件程序中加入下列代码:
Private Sub Command2_Click()
Form1.Hide
Form3.Show
End Sub
在Command3_click事件程序中加入下列代码:
Private Sub Command3_Click()
End
End Sub
End语句的功能是结束程序运行。
第二步,创建Form2窗体。我们首先要在Project菜单项单击“Add Form”,将出现图4所示的界面。我们在点中Form图标后,单击“打开”按钮,这样我们就为应用程序添加了一个新的窗体。系统的默认名字为Form2.。
图4 添加窗体界面
在Form2中我们添加驱动器控件,目录列表框控件,文件列表框控件,命令控件,标签控件和图像框控件。需要修改的属性值如表3所示,其它属性采用默认值。
表3 对象属性值
对象 属性 设置值
Form2 Caption 打开图片
Label1 Caption 磁盘驱动器:
Label2 Caption 目录列表框:
Label3 Caption 文件列表框:
Label4 Caption 需显示的图片:
Label5 Caption
File1 Pattern *.jpg
Command1 Caption 退出
驱动器列表框控件是用来显示计算机内部与之连接的磁盘名,它是下拉式列表框。默认时,显示用户系统当前驱动器。在该控件获得焦点时,用户可输入任何有效的驱动器标识符,或者单击驱动器列表框右侧的下三角箭头,在列表框中选择。用户单击下三角箭头时,列表中将列举所有的有效驱动器。当用户从中选定新的驱动器时,则这个驱动器名将出现在列表框的顶端。
驱动器列表框控件的常见属性是Diver属性,该属性返回或设置运行时选择的驱动器,设计时,该属性不可用,用户在属性窗口中看不到该属性。
驱动器列表框控件的常见事件是Change事件。当程序运行时,在选择了一个新的驱动器或通过代码改变Drive属性的设置时,即触发Change事件。
目录列表框控件在运行时,分层显示当前驱动器中的文件夹,并显示文件夹中所包含的子文件夹。程序运行时,用鼠标双击控件中某一文件夹名,即可打开该文件夹显示出该文件夹中所包含的所有子文件夹名。
目录列表框控件常用的属性是Path属性。该属性返回或设置当前路径。在设计时,同驱动器列表框控件一样是不可用,用户在属性窗口中看不到该属性。
同驱动器列表框控件一样,目录列表框控件的常见事件是Change事件。当程序运行时,在选择了一个新的驱动器或通过代码改变Path属性的设置时,即触发Change事件。
文件列表框控件在运行时,用来显示当前文件夹中的文件。它在运行时显示由Path属性指定的包含在目录中的文件。该控件将文件定位并列举出来,并可指定所显示的文件类型。
文件列表框控件常见属性:
Path属性
文件列表框控件的Path属性同目录列表框控件类似。
Pattern属性
Pattern属性用来指定控件中显示符合条件的文件。例如:在本程序中,我们要打开的是图片文件,所以我们将Pattern属性设置为”*.jpg”。
在文件列表框控件还有Archive,ReadOnly,System,Hidden,Normal,MutiSelect属性,在此我们就不一一介绍。读者可参照MSDN的帮助。
文件列表框控件的常用事件是Click事件。当程序运行时,用户单击列表中的某一选项时,将触发该事件。用户可在此事件中添加功能代码来实现相应功能。
根据上面所讲解的,在本程序中,我们要在如下事件中加入代码。
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
在该事件中,我们指定了将要查找哪一个驱动器。
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
在该事件中,我们指定了将要查找哪一个目录下的文件。
Private Sub File1_Click()
Image1.Picture = LoadPicture(File1.Path & "\" & File1.FileName)
Label5.Caption = File1.Path & "\" & File1.FileName
End Sub
当我们选定文件框控件中的某一文件时,将在图像框控件中显示出来。因此我们在程序运行时,将Image1的Picture属性修改,并且为了显示的文件名称,我们添加了一个标签控件Label5,在其Caption属性中显示打开文件的名称。
当我们单击“退出”按钮时,我们将返回到主界面,即显示Form1,同时隐藏Form2。因此,我们在Command1的Click事件中添加如下代码:
Private Sub Command1_Click()
Form2.Hide
Form1.Show
End Sub
第三步,创建Form3窗体。即显示数据库信息的窗体。因为我们主要讲的是如何使用Visual Basic进行开发应用程序,因此在这里,我们就不介绍如何使用Microsoft Access 生成在这个例子中所使用的数据库。读者只需知道在该数据库中有一个用户信息表,其中存放着用户的姓名、性别、E_Mail、工作单位以及电话等信息即可。在该窗体中我们使用了数据控件、标签控件、文本框控件以及命令控件。其相应需要修改的属性值如表4所示,其中Text1、Text2 、Text3 、Tex41和Text5的Text属性为空字符,DataSource属性为Data1,其它属性采用默认值。
表4 对象属性值
对象 属性 设置值
Form3 Caption 数据库
Label1 Caption 姓名:
Label2 Caption 性别:
Label3 Caption E_Mail:
Label4 Caption 工作单位:
Label5 Caption 电话:
Text1 DataField 姓名
Text2 DataField 性别
Text3 DataField E_Mail
Text4 DataField 工作单位
Text5 DataField 电话
Data1 Connect Access
Caption 用户信息
DatabaseName D:\例子\用户表.mdb
RecordSource 用户信息
Command1 Caption 退出
Visual Basic中,用户可以使用Data控件来实现大部分数据访问操作,而根本不需要作任何工作。与Data 控件相连结的帮定控件将自动显示来自当前记录的一个或者多个字段中的数据。当Data控件被指示移动到一个不同的记录,则所有被连接的数据帮定控件自动将当前记录的任何改变传递给Data控件,并保存在数据库中。Data控件移动到指定的记录,同时把当前记录中的数据传回到数据帮定控件显示。
Data控件的主要属性有:
1.DataBasenName属性
DataBaseName属性设置或返回Data控件的数据源的名称和位置。它的语法为:
对象名.DataBaseName=路径名
路径名参数指示数据库文件的位置或ODBC数据源名称的字符串表达式。如果支持网络系统,则路径名参数可以是一个完全限定的网络路径。
2.RecordsetType 属性
RecordsetType 属性返回或设置一个值,用来指定Data控件创建的记录集对象的类型。它的语法为:
对象名.RecordSetType=返回值
其中返回值可以为表5中所示的数值。
表5 RecordSetType属性的设置值
设置 值 描述
vbRSTypeTable 0 一个表类型记录集
vbRSTypeDynaset 1 (默认设置)一个动态类型记录集
vbRSTypeSnapshot 2 一个快照类型记录集
如果Microsoft Jet数据库引擎不能创建所请求的记录集类型,则将产生一个可捕获的错误。
如果Data控件创建记录集前没有指定RecordSetType,则默认的一个动态类型的记录集将被创建。
如果不使用Data控件创建记录集,而用这个新记录对象来设置RecordSet属性,则Data控件的RecordSetType属性被设置为新记录集的RecordSetType属性。
在我们的应用程序中,我们只设置Data控件的RecordSetType属性为默认值即可。
3 RecordSource属性
RecordSource属性设置或返回Data控件的基本表、SQL语句。其语法值为:
对象名.RecordSource=返回值
其返回值可以为表6中所示的数值。
表6 RecordSource属性的设置值
设置 描述
表名称 在记录集对象的TableDefs集合中定义的一张表的名称
SQL查询 符合数据源的语法的合法SQL字符串
QueryDef 记录集对象的QueryDefs集合中一个QueryDef对象的名称
RecordSource属性指定通过窗体上的被帮定的控件访问的记录的来源。
如果将RecordSource属性设置为数据库中的一个存在的表名称,则表所有字段对附属于Data控件的数据帮定控件都是可见的。
因此,在本程序中,我们将Data控件同文本框控件相互帮定,并可在文本框控件中看到数据库中的信息。而需要我们作的工作仅仅是,将文本框控件与Data控件帮定,即将文本框控件的DataSource设置为Data1,这样就完成了帮定。另外,我们还需要将文本框控件同数据库表格中的特定字段帮定,来显示数据库的表中的相应信息。所以我们要设置文本框控件的DataField属性,具体值的设置参见表4。
当我们单击“退出”按钮时,将返回主界面,因此在Command1的Click事件中添加如下代码:
Private Sub Command1_Click()
Form3.Hide
Form1.Show
End Sub
这样,我们完成了整个应用程序的编码工作。接下来,就是保存文件,窗体,以及编译运行,这些我们在上一讲中已经介绍过,不再重复。
|