第八章 常用控件与系统对象本章内容及要求:
1,掌握常用控件单选钮 (OptionButton)、检查框
(CheckBox),框架 (Frame)、滚动条 (ScrollBar),列表框 (ListBox)、组合框( ComboBox)、时钟 (Timer)等的常用,属性、重要事件和方法的使用;
2,了解一些常用的 ActiveX控件(高级控件)的使用。
3,了解一些常用系统对象的使用。
本章重点:
常用控件单选钮、检查框,框架、滚动条,列表框 (ListBox)、组合框( ComboBox)、时钟 (Timer)等的常用 属性、重要事件和方法的使用;
本章难点:
ActiveX控件(高级控件)的使用。
一些常用系统对象的使用。
8.1 单选钮、检查框及框架
8.1.1单选钮
1 用途单选钮 ( OptionButton) 也称作选择按钮 。 一组单选钮控件可以提供一组彼此相互排斥的选项,任何时刻用户只能从中选择一个选项,实现一种,单项选择,的功能,
被选中项目左侧圆圈中会出现一黑点 。
单选按钮
2,重要属性
( 1) Caption,文本标题。设置单选钮的文本注释内容。
( 2) Alignment属性,
0,— Left Justify(缺省设置 )控件钮在左边,标题显示在右边。
1,— Right Justify 控件钮在右边,标题显示在左边。
( 3) Value 属性 True,单选钮被 选定
False,单选钮未被 选定( 缺省设置)
( 4) Style 属性
0--Standard,标准方式 1--Graphical:图形方式说 明,在 Style属性设置为 1时,可使用 Picture 属性
(未选定时的图标或位图),DoWnPicture属性 ( 选定时的图标或位图 ),DisabledPicture属性(禁止选择时的图标或位图)
3 方法
SetFocus方法 是单选钮控件最常用的方法,可以在代码中通过该方法将 Value属性设置为 True。
与命令按钮相同,使用该方法之前,必须要保证单选钮处于可见和可用状态 ( 即 Visible与 Enabled属性值均为
True) 。
4 事件
Click事件是单选钮控件最基本的事件,一般情况用户无需为单选钮编写 Click事件过程,因为当用户单击单选钮时,它会自动改变状态 。
例 8.1 单选钮示例( Pg.185)。
8.1.2 检查框
1 用途检查框 ( CheckBox) 也称作复选框,选择框 。 一组检查框控件可以提供多个选项,它们彼此独立工作,所以用户可以同时选择任意多个选项,实现一种,不定项选择,
的功能 。 选择 某一选项后,该控件将显示 √,而清除此选项后,√消失 。
2,重要属性
Caption,Alignment,Style与单选钮相同
检查框的 Value 属性与单选按钮不同,其值为数值型数据,可取 0,1,2
检查框
0--Unchecked,未被 选定
1--Checked:选定
2--Grayed,灰色,禁止选择单选钮
True,单选钮被 选定
False,单选钮未被 选定,
缺省设置检查框与单选按钮 Value 属性的比较
3 方法检查框也可使用 SetFocus方法来改变其 Value属性值,其用法与要求同单选钮 。 每调用一次 SetFocus方法就会触发一次 Click事件 。
4 事件
Click事件是检查框控件最基本的事件 。 用户一般无需为检查框编写 Click事件过程,但其对 Value属性值的改变遵循以下规则:
单击未选中的检查框时,Value属性值变为 0;
单击已选中的检查框时,Value属性值变为 1;
单击变灰的检查框时,Value属性值变为 0。
8.1.3框架 (Frame)
Frame 控件为控件提供可标识的分组。当需要在同一窗体内建立几组互独立的单选钮时,就需要用框架将每一组单选钮框框起来,把 OptionButton 控件分成几组,如下形式。
框架设 Caption为 "字体 "
框架内控件的创建方法:
为了将控件分组,首先需要绘制 Frame 控件,然后绘制 Frame 里面的控件。这样就可以把框架和里面的控件同时移动。如果在 Frame 外部绘制了一个控件并试图把它移到框架内部,那么控件将在 Frame 的上部,这时需分别移动 Frame 和控件方法 1,单击工具箱上的工具,然后用出现的,+”指针,
在框架中适当位置拖拉出适当大小的控件。
不能使用双击工具箱上工具的自动方式。
方法 2,将控件“剪切” (Ctrl+X)到剪贴板,然后选中框架,使用 (Ctrl+V)命令粘贴到框架内。
重要属性
1,Caption属性,框架标题
2 Enabled属性,缺省为 True
False:标题呈灰色,不允许对框架内的所有对象进行操作 。
3,Visible属性:
True:框架及其控件可见。
False:框架及其控件被隐含起来。
事件:
框架可以响应的事件 Click,DblClick
一般不需要有关框架的事件过程。
例 8.2 单选钮、检查框及框架用法示例。 Pg.187
8.2 滚动条 (ScrollBar)
1 用 途滚动条控件( ScrollBar)分为水平滚动条( HScrollbar)
和垂直滚动条( VscrollBar)二种,通常附在窗体上协助观察数据或确定位置,也可用作数据输入工具,用来提供某一范围内的数值供用户选择。
2,属性
(1) Value
滑块所处位置所代表的值。
(2) Max:最大值
-32,768~32,767
(3) Min:最小值
-32,768~32,767
(4) SmallChange
最小变动值,
单击箭头时移动的增量值。
(5) LargeChange
最大变动值,单击空白处时移动的增量值。
4 事件
( 1) Change事件滚动条的 Change事件在移动滚动框或通过代码改变其
Value属性值时发生 。 单击滚动条两端的箭头或空白处将引发 Change事件 。
( 2) Scroll事件当滚动框被重新定位,或按水平方向或垂直方向滚动时,
Scroll事件发生 。 拖动滑块时会触发 Scroll事件
Scroll事件与 Change事件的区别在于:当滚动条控件滚动时 Scroll事件一直发生,而 Change事件只是在滚动结束之后才发生一次 。
例 8.3 滚动条示例。设计一个程序进行坐标设置教材 Pg.190
例 8.4 滚动条示例。
设计一个用于设置字体颜色的程序,
8.3 列表框与组合框一,用途列表框控件( ListBox) 用于显示项目列表,用户可从中选择一个或多个项目。如果项目总数超过了可显示的项目数,VB会自动加上滚动条。
列表框有两种风格:标准和复选列表框。通过它的
Style属性来设置。如下图:
组合框控件 ( ComboBox) 将文本框和列表框的功能结合在一起,用户可以在列表中选择某项 ( 只能选取一项 ) 。 或在编辑区域中直接输入文本内容来选定项目 。
组合框共 三种风格,下拉式组合框,简单组合框和下拉式列表框 ( 见下图 ) 。
二、主要属性
1,List,ListCount和 ListIndex属性这 3个属性只能在程序代码中设置:
List,字符型数组,存放列表框的项目数据,下标是从 0
开始的。
例如,List(0)表示第一项( Listindex=0)的内容
ListIndex,为整型值,选中的项目的序号,没有项目选中时为 -1。
ListCount,为整型值,表示项目的数量,ListCount-1是最后一项的下标。
2,Style属性该值用来指示控件的显示类型和行为 。 在运行时是只读的 。
对于列表框控件或组合框控件都有 Style属性,但它们的含义是不同的,见表 8.5和表 8.6。
例如,在窗体上放置 2个列表框,将其 Style属性分别设置为 0和
1;放置 3个组合框,将它们 Style属性分别设置为 0,1和 2。
3,MultiSelect属性用于指示是否能够在列表框控件中进行复选以及如何进行复选,在运行时是只读的 。 注意,组合框控件无此属性 。
设置值 含 义
0 ( 缺省值 ) 不允许复选
1 简单复选 。 鼠标单击或按下空格键在列表中选中或取消选中项 。
箭头键移动焦点
2 扩展复选 。 按下 SHIFT 并单击鼠标将在以前选中项的基础上扩展选择到当前选中项 。 按下 CTRL 并单击鼠标来在列表中选中或取消选中项表 8.7 MultiSelect 属性设置值及含义
4,Selected属性该属性返回或设置列表框控件中的一个项目的选择状态 。
该属性是一个逻辑类型的数组,数组元素个数与列表框中的项目数相同,其下标的变化范围与 List属性相同 。
例如,List1.Selected( 0) =True表示列表框 List1的第一个项目被选中,此时 ListIndex的值设置为 0。 Selected属性在设计时是不可用的,即无法在属性窗口中设置属性值。
5,NewIndex属性返回最近加入列表框控件或组合框控件的项目的索引。
如果在列表中已没有项目或删除了一个项目,该属性将返回
-1。
6,TopIndex属性返回或设置一个值,该值指定哪个项被显示在列表框控件或组合框控件顶部的位置 。 该属性取值范围从 0到 ListCount-
1,在设计时不可用 。
7,Sorted属性返回一个逻辑值,当 Sorted属性为 True时列表框控件或组合框控件的项目自动按字母表顺序 ( 升序 ) 排序,为 False时项目按加入的先后顺序排列显示 。 该属性只能在设计时设置,不能在程序代码中设置 。
8,Text属性对于下拉式组合框与简单组合框,Text属性返回编辑区域中的文本 。 对于列表框控件或下拉列表框,Text属性的返回值总与 List( ListIndex) 的值相同 。
3 方法
1,AddItem方法用于将项目添加到列表框控件或组合框控件 。
语法格式:
〈 对象名 〉,AddItem item [,index]
其中,item,为字符串表达式,表示要加入的项目。
Index:决定新增项目的位置,缺省,则添加在最后。
2,RemoveItem方法用于从列表框控件或组合框控件中删除一项 。
语法格式:
〈 对象名 〉,RemoveItem index
对 index参数的规定同 AddItem方法。
3,Clear方法用于清除列表框控件或组合框控件中的所有项目 。
语法格式:
〈 对象名 〉,Clear
例如,要删除列表框 ( List1) 中所有项目,可使用:
List1,Clear
例如,要删除列表框( List1)中所有选中的项目,可使用下面的程序段:
i = 0
Do While i <= List1.ListCount - 1
If List1.Selected(i) = True Then
List1.RemoveItem i
End If
i = i + 1
4,事件
( 1) Click事件当单击某一列表项目时,将触发列表框与组合框控件的 Click
事件 。 该事件发生时系统会自动改变列表框与组合框控件的
ListIndex,Selected,Text等属性,无需另行编写代码 。
( 2) DblClick事件当双击某一列表项目时,将触发列表框与简单组合框控件的
DblClick事件 。
( 3) Change事件当用户通过键盘输入改变下拉式组合框或简单组合框控件的文本框部分的正文,或者通过代码改变了 Text属性的设置时,
将触发其 Change事件 。
例 8.5 列表框示例。
设计一个畅销书排行榜程序。 用户界面如右图。
例 8.6 组合框示例。
设计一个用于设置字体属性的程序,
界面如右图所示。
1 用途时钟控件( Timer)又称计时器、定时器控件,
用于有规律地定时执行指定的工作,适合编写不需要与用户进行交互就可直接执行的代码,如计时、倒计时、动画等。在程序运行阶段,时钟控件不可见。
8.4 时钟
2 属 性
( 1) Interval属性取值范围在 0 到 64767 之间 ( 包括这两个数值 ),单位为毫秒 ( 0.001秒 ),表示计时间隔 。 若将 Interval属性设置为 0或负数,则计时器停止工作 。
( 2) Enabled属性无论何时,只要时钟控件的 Enabled属性被设置为 True
而且 Interval属性值大于 0,则计时器开始工作 ( 以 Interval
属性值为间隔,触发 Timer事件 ) 。
通过把 Enabled属性设置为 False可使时钟控件无效,即计时器停止工作 。
3 方法
VB没有为时钟控件提供有关的方法 。
4 事件时钟控件只能响应 Timer事件,当 Enabled属性值为 True
且 Interval属性值大于 0时,该事件以 Interval属性指定的时间间隔发生,需要定时执行的操作即放在该事件过程中完成。
例 8.7 时钟示例。 设计一个计时报警程序,开始时窗体上显示当前时间,单击“开始”按钮 10秒钟后程序结束。
例 8.8 设计一个霓虹灯程序,利用时钟控件模拟霓虹灯的效果。
*8.5 ActiveX控件概念:
在 VB中除了使用工具箱上的标准控件外,还可以使用微软以及一些第三方厂商开发了许多扩展的高级控件,这些控件被称为 ActiveX控件 。
使用 ActiveX控件,首先应把需要使用的 ActiveX控件添加到工具箱中 。 ActiveX控件文件的类型名为,ocx,一般情况下 ActiveX 控件被安装和注册在 \Windows\System 或
System32 目录下 。
执行,工程,菜单中的,部件,命令,打开,部件,对话框,该对话框中列出当前系统中所有注册过的 ActiveX 控件,可插入对象和 ActiveX设计器 。
8.5.1 UpDown控件
UpDown控件位于 Microsoft Windows Common Controls-2
6.0部件中,其添加到工具箱后的图标为 。 UpDown控件一般与其它控件配套使用,与之配套的控件称为伙伴控件 。
属性:
1 BuddyControl属性
2 BuddyProperty属性
3 Value属性
4 Increment属性
5 Min和 Max属性
6 Wrap属性例 8.9 UpDown控件示例。
8.5.2 Slider控件
Slider控件位于 Microsoft Windows Common Controls 6.0
部件中,其添加到工具箱后的图标为 。 Slider控件包含滑块和可选择性刻度标记,与滚动条控件类似,
Slider控件具有与滚动条控件相类似的 基本属性:
如 Min,Max,SmallChange,LargeChange和 Value属性
Slider控件的其它属性:
( 1) TextPosition属性:
( 2) TickFrequency属性:
( 3) TickStyle属性:
Slider控件的常用事件 为 Scroll和 Change,其触发条件与滚动条控件相同。
例 8.10 Slider控件示例。
8.5.3 ProcessBar控件
ProcessBar控件 位于 Microsoft Windows Common Controls
6.0部件中,其添加到工具箱后的图标为 。 ProcessBar
控件常用于监视一个较长操作完成的进度,它通过从左到右用一些方块填充矩形的形式来表示操作处理的进程。
ProcessBar控件的属性设置:
例 8.11
ProgressBar控件示例
8.5.4 ImageList控件与 ImageCombo控件
ImageList控件与 ImageCombo控件均位于 Microsoft
Windows Common Controls 6.0部件中,其添加到工具箱后的图标分别为 和 。
ImageList控件 不能独立使用,它只是一个向其它控件提供图象的资料中心,运行时不可见。
ImageCombo控件 是支持图片的组合框,控件列表中的每一项都可以有一幅图片指定给它。
例 8.12 ImageList控件与 ImageCombo控件示例。
8.5.5 SSTab控件
Style:选项卡样式
Tabs:选项卡总数
TabsPerRow:每一行选项卡的数目
Rows:选项卡总行数
TabOrientation:选项卡的位置。
ShowFocusRect:决定选项卡上的焦点矩形是否可视。
Tab:当前选项卡的序号。序号从 0开始,如果 Tab为 1,则第二个选项卡为当前活动的选项卡。
SSTab控件位于 Microsoft Windows Tabbed Dialog Control
6.0部件中,其添加到工具箱后的图标为属性:
*8.6 常用系统对象在 Visual Basic系统中,提供许多的系统内部对象,用户在应用程序中,直接可以调用这些对象。系统对象没有用户界面。
8.6.1 App对象用途:
在应用程序中使用 App对象可获得:应用程序的标题、
版本信息、可执行文件和帮助文件的路径及名称等信息,
以及检查应用程序是否已经运行等。
最常用的属性属 性 类 型 作 用
ExeName String 返回当前正运行的可执行文件的根名 ( 不带扩展名 ) 。
如果是在开发环境下运行,则返回该工程名 。
Path String 当从开发环境运行该应用程序时 Path指定,VBP工程文件的路径,或应用程序的可执行文件运行时 Path
指定,exe 文件 的路径 。
PreInstance Boolean 检查系统是否已有一个实例,可用于限制应用程序只能执行一次 。
Title String 返回或设置应用程序的标题,
TaskVisible Boolean 当前的运行程序是否显示在 Windows系统的任务栏中例 8.13 要限定某用应用程序( *.EXE)必须放在 D盘根目录与应用程序同名的文件夹中才能运行。
可在窗体的 Load事件中写入如下代码
Private Sub Form_Load()
If App.EXEName = Mid(App.Path,4) And _
Ucase(Mid(App.Path,1,2)) = "D:" Then
Exit sub
Else
End
End If
End Sub
8.6.2 Clipboard 对象
Clipboard 对象用于操作剪贴板上的文本和图形 。 它使用户能够复制,剪切和粘贴应用程序中的文本和图形 。
所有 Windows 应用程序共享 Clipboard 对象,当切换到其它应用程序时,剪贴板内容会改变 。 因此 Clipboard
( 剪贴板 ) 对象提供了应用程序之间信息的传递 。
Clipboard 对象它没有属性和事件,仅提供 6个常用的方法 。
Clipboard 对象的常用方法,
1,Clear方法在复制信息到剪贴板之前,应使用 Clear方法清除 Clipboard
对象中的内容,使用格式如下:
Clipboard.Clear
2,SetText方法使用 SetText方法将字符串数据按指定格式存入剪贴板中,
使用格式如下:
Clipboard.SetText <TxtData >[,<format>]
其参含义见教材 Pg.211
3,GetText方法使用此方法从剪贴板中获得一字符串 。 其语法格式为:
Clipboard.GetText( [<format>])
例如,要将剪贴板上的文字粘贴到文本框插入点所在处或替换选中的内容,则可使用如下语句:
Text1.SelText=Clipboard.GetText()
4,SetData方法将图形数据保存到剪贴板上,要使用 SetData方法,其使用语法格式为:
Clipboard.SetData 〈 data〉 [,format]
其中,
〈 data〉 参数是必需的 。为要放到 Clipboard 对象中的图形数据。
〈 format〉 参数是可选的 。一个常数或数值,用来指定图片的格式,其取值见表 8.15,如果省略 format,则由系统自动决定图形格式。
5,GetData方法用此方法从剪贴板中得到图形,其使用语法格式是:
Clipboard.GetData( [format])
例 8.14
6,GetFormat方法使用 GetFormat方法,检查剪贴板中指定格式的数据存在否,
它返回一个逻辑值 。 其语法格式:
Clipboard.GetFormat (<format>)
例 8.15 使用 GetFormat 方法确定剪贴板中是否有 Bmp格式数据,如果有将其粘贴到图片框 picture1中。
Private Sub Form_Click ()
If Clipboard.GetFormat(vbCFBitmap) Then
Picture1.picture= Clipboard.GetData( )
End if
End Sub
8.6.3 Screen对象
Screen对象 代表了整个 Windows桌面。通过 Screen对象,还可以在程序运行期间修改屏幕的鼠标指针。
属 性 作 用
ActiveControl 返回拥有焦点的控件
ActiveForm 返回拥有焦点的窗体
FontCount 返回屏幕可用的字体数
Fonts 返回当前显示器或活动打印机可用的所有字体名 。 Fonts是字符串数组
Height,Width
MouseIcon
返回屏幕的高和宽 ( Twip为单位 )
返回或设置自定义的鼠标图标
MousePointer 设置或获取鼠标的形状
Screen对象的常用属性例 8.16 打印输出计算机系统中显示器或活动打印机可用的所有字体名,其程序如下:
Private Sub Command1_Click()
Dim I As Integer
For I = 0 To Screen.FontCount - 1
Print Screen.Fonts(I)
Next I
End Sub
8.6.4 Printer对象和 Printers集合对象在 VB中,要将处理结果的数据或图形通过打印机输出,
就必须使用系统提供的 Printer对象和 Printers集合对象
1,Printer对象
2,Printers集合对象
8.6.5 立即窗口立即窗口是 Visual Basic所提供的全域性 (G1obal)系统对象之 —,称为 Debug对象,作为调试之用。此对象除了 Print方法外,不具备任何事件和属性。
在设计状态 可以在立即窗口中进行一些简单的命令操作,例如可用“?”或 Print(两者等价)输出一些表达式的值。
在程序中,可以使用 Debug.Print方法 将要输出的信息输出到立即窗口中;而若要作为立即之用、只要进入“中断”模式便会出现此窗口。
8.6.6 其他系统对象除了上述对象外,系统还提供了 Control对象,Controls
集合对象,Form对象,Forms集合对象 。 关于这些对象的使用,限于篇幅不再展开,读者可以通过系统 MSDN帮助获得详细的帮助 。
先举例说明 Control对象,Controls集合对象的使用,
Controls集合对象包含窗体上的所有控件,如下程序段是在立即窗口中显示窗体上的所有控件名称:
Dim x As Control
For Each x In Form1.Controls
Debug.Print x.Name
Next x