1
5.1 控件基本知识
5.2 文本控件
5.3 图形控件
5.4 按钮控件
5.5 选择控件 -复选框与单选按钮
5.6 选择控件 -列表框和组合框
5.7 滚动条
5.8 定时器
5.9 框架
5.10 焦点与 TAB顺序第 5章 常用标准控件
2
5.1 控件基本知识
Visual Basic的控件可广义地分为 3类:
– 标准控件
– ActiveX控件
– 可插入的对象。
3
5.1.1 标准控件
标准控件:也称内部控件,总是出现在工具箱中
显示工具箱:单击“视图 /工具箱”
菜单命令或工具栏的工具箱按钮图 5-1 Visual Basic工具箱
1
3
5
7
9
11
13
15
17
19
21
2
4
6
8
10
12
14
16
18
20
4
5.1.2 ActiveX控件
ActiveX是建立在微软的 Component
Object Model( CoM组件对象模型)上的技术框架。
ActiveX控件是 ActiveX部件的一种重要的类型。
ActiveX部件是一段可重复使用的编程代码和数据。共有 4种类型,ActiveX控件、
ActiveX.exe,ActiveX.dll,ActiveX文档。
5
ActiveX控件是 VB工具箱的扩充部分
ActiveX控件加到工具箱的步骤:
– 在“工程( Project),菜单中,单击“部件”以显示
“部件”对话框。
– 选定控件名称左边的复选框。
– 单击“确定”以关闭“部件”对话框。
所有选定的 ActiveX控件将出现在工具箱中。
6
添加 ActiveX过程示意图 5-2 添加 ActiveX控件
( a) 添加 ActiveX控件对话框 ( b) 添加控件后的工具箱添加的ActiveX
控件图标
7
5.1.3 ActiveX Dll代码部件
ActiveX DLL是 ActiveX部件的 4种类型之一。
要创建对于在 ActiveX DLL中定义的对象的引用,可以按以下步骤操作:
– 从“工程”菜单中选择“引用”。
– 在“引用”对话框中,选择 ActiveX部件的名称,
它包含在应用程序中使用的对象的。
– 可以使用“浏览”按钮来搜索包含所需对象的类型库文件(,tlb或,olb),可执行文件(,exe) 与动态链接库( DLLs) 也可以提供类型库。
8
5.1.4 可插入对象
可插入的对象,如 Microsoft Excel工作表对象 。 这些对象能添加到工具箱中,可以把它们当作控件使用 。
可插入对象的使用像代码部件一样,通过“工程”菜单的“引用”项将其添加到工程中,其操作也与代码部件相同。
9
5.2 文本控件标准控件 Label和 TextBox是用于显示和输入文本的。其中:
Label控件:只能在控件中显示文本。
TextBox控件:不仅能在控件中显示文本,
而且允许用户在程序运行中修改其中的文本。
10
5.2.1 标签
Label控件用于;
– 输出标题:用 Label来标注本身不具有
Caption属性的控件。
– 显示输出结果和标识窗体上的对象,如向用户提供帮助信息。
– 可编写代码改变 Label控件显示的文本内容以响应运行时的事件。
11
1,属性
Caption,Left,Top,Width,Height,Font,
Forecolor,Visible,Alignment,Appearance、
Autosize,BackColor,BackStyle,Borderstyle、
Enabled,Index,ToolTipText
( 1) Alignment属性设置 Label控件中文本的排列方式。其值为:
0,左对齐(缺省值);
1,右对齐;
2,居中对齐。
12
( 2) Appearance属性返回或设置控件在设计时的绘图风格。其值可选择:
0,平面绘制控件和没有可视化效果的窗体;
1,(缺省值) 3D,带有三维效果的绘制控件。
( 3) Autosize属性返回或设置一个值,以决定控件是否自动改变大小以显示其全部内容。其值为:
True,自动改变控件大小以显示全部内容;
False( 缺省值),保持控件大小不变,超出控件区域的内容被裁剪掉。
13
( 4) BackColor属性返回或设置对象的背景颜色,设置方式和设置值 Forecolor属性一致。
( 5) BackStyle属性返回或设置对象的边框样式。其值为:
0(缺省值),None无边框;
1,FixedSingle固定单边框。
14
( 6) Enabled属性返回或设置一个值,用来确定控件是否能够对用户产生的事件做出反应 。 其值为:
True,( 缺省 ) 允许对象对事件做出反应;
False,阻止对象对事件做出反应 。
( 7) Index属性返回或设置唯一地标识控件数组中一个控件的编号 。
其值为:
No value,( 缺省 ) 不是控件数组的元素;
0~32767,是数组的元素,控件数组中的所有控件具有相同的 Name属性 。 VB自动地分配在控件数组中有效的下一个整数 。
( 8) ToolTipText属性返回或设置一个工具提示。
设计时,可以在控件的 ToolTipText属性中设置字符串 。
15
3,事件
Label控件有 DblClick,Change,MouseMove、
MouseDown及 MouseUp 事件。
( 1) DbClick事件当在对象上双击鼠标按钮时,该事件发生 。
语法:
Private Sub object_DblClick (index As Integer)
object为事件发生的 Label对象名称;
index为整数,用来唯一地标识一个在控件数组中控件 。
注意:双击时 DblClick事件发生在 Click事件之后。
16
( 2) Change事件当 Label的 Caption属性的值发生改变时此事件发生 。 语法:
Private Sub object_Change([index As Integer])
Change事件可协调在各控件间显示的数据或使它们同步。
17
( 3) MouseMove事件 ( 详见第 9章 )
移动鼠标时发生该事件 。 语法:
Private Sub object_MouseMove([ index As Integer,] button As Integer,shift
As Integer,x As Single,y As Single)
– button为一个整数,它对应鼠标各个按钮的状态:
button=1,左按钮按下;
button=2,右按钮按下;
button=4,中间按钮按下;
button=0,无键按下 。
MouseMove事件参数:
– shift为一个整数,它对应于 SHIFT,CTRL,ALT键的状态:
shift=1,SHIFT键按下;
shift=2,CTRL键按下;
shift=4,ALT键按下 。
shift=0,SHIFT,CTRL,ALT都没按
shift=2+4=6,CTRL,ALT键同时按下
– x和 y指定鼠标当前位置,其值由窗体的坐标系统确定 。
18
( 4) MouseDown,MouseUp事件
( 详见第 9章 )
当按下鼠标按钮时,MouseDown事件发生,释放鼠标按钮时 MouseUp事件发生 。 语法:
– Private Sub object_MouseUp([index As Integer,] button
As Integer,shift As Integer,x As Single,y As Single)
– Private Sub object_MouseDown([index As Integer,]
button As Integer,shift As Integer,x As Single,y As
Single)
19
2,方法
ZOrder将指定控件放置在其图层的 Z方向 ( 垂直于平面的方向 ) 的前端或后端:
Label1.ZOrder 1 '将对象 Label1置于后端
Label1.ZOrder 0 '将对象 Label1置于前端
20
例 5-1 窗体上有红、绿、黄 3种颜色的文字,鼠标每双击一次文字区,文字的颜色就改变一次。
Private Sub Label1_DblClick()
Label1.ZOrder 1
End Sub
Private Sub Label2_DblClick()
Label2.ZOrder 1
End Sub
Private Sub Label3_DblClick()
Label3.ZOrder 1
End Sub
图 5-3 Label控件
21
5.2.2 文本框 TextBox
文本框控件称为编辑字段或者编辑控件,用于文本编辑,用户可以在该控件区域内输入、编辑、修改和显示文本内容。
1,TextBox控件的属性
TextBox控件的 Alignment,Appearance,Autosize、
BackColor,BackStyle,Borstyle,Enabled,Index,
Font属性及参数设置与 Label的对应属性相同。
22
( 1) MultiLine属性设置是否可以输入多行文本,取值,
True,具有自动换行功能;
False,只允许输入一行,一旦超过文本框宽 度时,超过部分不显示
( 2) ScrollBars属性设置滚动条模式,有 4种选择:
0,无滚动条;
1,水平滚动条;
2,垂直滚动条;
3,水平和垂直滚动条。
23
( 3) SelLength属性选中的字符数,只能在代码中使用,值为 0时,表示未选中任何字符。
( 4) SelStart属性选择文本的起始位置,只能在代码中使用,第一个字符的位置为 0,第二个字符的位置为 1。
( 5) SelText属性选中的文本框的字符串,只能在代码中使用。
24
2,TextBox控件的常用事件
TextBox的方法,SetFocus,Move,ZOrder。
例 5-2 乘法运算器界面设计。
图 5-4 乘法运算器窗体设计
25
5个标签分别用于标识 3个文本框和 2个运算符号:
Label1.Caption=“乘数”
Label2.Caption=“被乘数”
Label3.Caption=“积”
Label4.Caption="*“
Label5.Caption="="
Form1的标题设为“乘法器”:
form1.Caption=“乘法器”
3个命令按钮标题分别设为“求积”、“清空”和“结束”:
Command1.Caption="求积 "
Command2.Caption="清空 "
Command3.Caption="结束 "
26
5.3 图形控件
VB 6.0包含 4个图形控件:
– pictureBox控件
– Image控件
– Shape控件
– Line控件其中,Image,Shape和 Line控件被称作轻量图形控件,它们只支持 PictureBox的属性、方法和事件的一个子集。
27
5.3.1图片框、图像框的属性、事件和方法
PictureBox称为图片框
Image控件称为图像框。
图片框和图像框可以显示的图像文件格式有:
位图文件、图标文件、图元文件,JPEG格式文件、
GIF格式文件。
28
1,图片框的常用属性、事件与方法
( 1) PictureBox控件属性
① Picture属性
Picture属性可设置被显示的图片文件名,运行时使用
LoadPicture函数载入图形
② AutoSize属性该属性决定控件是否自动改变大小以显示其全部内容
③ ScaleLeft,ScaleTop,ScaleWidth,ScaleHeight和
ScaleMode属性
ScaleLeft和 ScaleTop设置左上角坐标 ;ScaleWidth和
ScaleHeight在现有的有效绘图区域确定新坐标系的刻度。
29
ScaleMode属性可决定对象坐标使用的度量单位。
表 4-3 ScaleMode属性值 含义
1 缇,twip( 缺省 ) 1/1440英寸,1/567厘米
2 磅,point,1/72英寸
3 象素,pixel
4 字符
5 英寸
6 毫米
7 厘米
将 ScaleMode设为大于 0的值,会使 ScaleTop,ScaleLeft自动为 0;
修改其他任何 Scale属性都会使 ScaleMode为 0 (自定义)
例
30
例 5-3 在窗体上设置一个图片框 Picture1,其
Width与 Height分别为 4000与 3000,将 Picture1的坐标系统的原点坐标设置在图形区域的中点,并以坐标原点为圆心画半径为 1000缇的圆。
设置坐标属性为:
Picture1.ScaleWidth=2000
Picture1.ScaleHeight=1500
Picture1.ScaleLeft=-1000
Picture1.ScaleTop=-750
'左上角坐标 (-1000,-750)
'即坐标系统原点在图形区域的中点
Private Sub Picture1_Click()
Picture1.Circle (0,0),500,vbBlack
End Sub
图 5-5 坐标系统设置
31
④ PictureBox控件作为容器
PictureBox控件可以用作其它控件的容器。在
PictureBox控件上面可以加上其它控件,这些控件随
PictureBox移动而移动,其 Top和 Left属性是相对
PictureBox而言,与窗体无关。
32
( 2)图片框的常用事件
– 图片框的常用事件有,Click,DBClick,Change、
鼠标事件、键盘事件
( 3) PictureBox控件的常用方法
① Line方法在对象上画直线和矩形 。 语法:
object.Line [Step] (x1,y1)-[Step] (x2,y2),[color],
[B][F]
其中,object为 PictureBox对象; ( x1,y1) 为线段的起点或矩形的左上角坐标; ( x2,y2) 为线段的终点或矩形的右下角坐标; Step指相对于线的起点的终点坐标 ;B表示画矩形; F表示用画矩形的颜色来填充矩形 ;用 F则必须用 B。 若只用 B而不用 F,则矩形的填充由 FillColor和 FillStyle属性决定 。
例
33
例 5-4 Line方法在窗体上画同心矩形。
【分析】在窗体上设置一个 PictureBox控件,用 Line方法以不同的颜色画 25个同心矩形,并以同色填充,颜色的由函数 QBColor设置,线条宽度由属性 DrawWidth确定。
图 5-6 同心矩形
34
② Circle方法在对象上画圆,椭圆或弧 。 语法:
object.Circle [Step] (x,y),radius,[color,start,end,aspect]
其中,( x,y) 为 Single类型,是圆、椭圆或弧的中心坐标; step表示采取当前作图位置的相对值; start、
end分别表示起始角度、终止角度,取值为 0~2?时,
画圆弧,取值为负值时,画扇形,负号表示画圆心到圆弧的径向线; aspect长短轴比率,默认值为 1,
画圆,大于或小于 1时,画椭圆。
Circle(15,15),15 ' 画一个半径为 15的圆
Circle(15,15),15,,,,0.5 '画纵轴与横轴之比为 0.5的椭圆。
35
③ Cls方法清除运行时 PictureBox所生成的图形和文本。
④ Point与 Pset方法
– Point用于返回图形框上指定点的 RGB颜色,若指定点在对象外面,则返回值为 -1,该方法对图象控件无效。
– Pset用于在图形框指定位置画点。
object.Point(x,y)
object.PSet [Step] (x,y),[color]
其中:
( x,y) 为所画点的坐标; Step为当前作图的相对值 。
例 5-5 用 Pset方法画函数曲线 。
36
⑤ Print方法利用 PictureBox控件的 Print方法,可以在控件中打印文本、
图像、动画。
语法,object.Print [outputlist]
outputlist的格式为:
{Spc(n) | Tab(n)} expression charpos
– Spc(n)表示插入 n个空格; Tab(n)表示插入点定位在绝对列号 n上;
– expression为要输出的表达式; charpos为下一个字符的输出位置 。 多个表达式可以用空白或分号来分隔 。
37
2,图像框的常用属性、事件与方法
Image控件也用来显示图形。
Image使用较少的系统资源,所以重画起来比
PictureBox控件要快。
Image只支持 PictureBox控件的一部分属性、事件和方法。
可以把 Image控件放在其它容器里,但是 Image
控件本身不能作为容器使用。
38
( 1) Image控件属性
Picture属性确定控件显示的内容。
Stretch属性来指定一个图形是否要调整大小,
– 当值为 True时,图形调整大小以与控件相适合;
– 当值为 False时,控件调整大小以与图形相适应。
Image控件没有 ScaleLeft,ScaleTop、
ScaleWidth,ScaleHeight和 ScaleMode属性。不能设置对象的坐标系统,
39
( 2) Image控件事件
– Image控件具有 Click事件,DbClick事件、鼠标事件、
键盘事件
– 没有 Change事件,在程序运行过程中,不会因为 Picture
属性的改变而发生 Change事件。
( 3) Image控件方法
– Image控件只具有 Move,Refresh,ZOrder等方法,不支持 PictureBox控件的图形方法。
40
5.3.2图形文件的装入利用函数 LoadPicture将图形载入 PictureBox或 Image控件。
语法:
LoadPicture([filename],[size],[colordepth],[x,y])
– filename指定图片文件名;
– 如果 filename是光标或图标文件,size指定图象大小,
colordepth指定颜色深度,( x,y) 指定光标或图标的宽度与高度。
例如:
– PicSample.Picture= LoadPicture("D:\usos\cap.bmp")
– Image1.Picture = LoadPicture("c:\Windows\Winlogo.cur",
vbLPLarge,vbLPColor)
vbLPLarge,vbLPColor分别表示载入的光标使用系统大图标和
256色。
– 运行时从 PictureBox或 Image控件中删除图形:
Image1.Picture = LoadPicture或 LoadPicture( )或 LoadPicture("")
41
5.3.3 直线与形状
Shape,Line控件为轻量图形控件,们比
PictureBox控件显示速度快并且包含
PictureBox控件的属性、方法、事件的子集。
Shape控件和 Line控件不支持任何事件。
42
Shape控件的 Shape属性表 5-4 Shape控件的预定义图形图形名称 数值 常量矩形 0 vbShapeRectangle
正方形 1 vbShapeSquare
椭圆形 2 vbShapeOval
圆形 3 vbShapeCircle
圆角矩形 4 vbShapeRoundedRectangle
圆角正方形 5 vbShapeRoundedSquare
图 5-8 Shape属性确定的形状
43
使用 FillStyle属性,可以对图形进行填充。
预定义的填充格式包括:实线、透明线、水平线、垂直线、
向上对角线、向下对角线、十字线、对角十字线。
通过使用 BorderStyle属性,可以设置图形的边框格式 。
预定义的格式包括:透明、实线、虚线、点线、点划线、
双点划线、内实线。
Line控件可在窗体中画直线。
BorderWidth属性调节直线的粗细; BorderStyle属性决定直线的线型; BorderColor确定直线的颜色; X1,X2、
Y1,Y2属性控制线的两个端点的位置。
44
5.4 按钮控件命令按钮可以控制一个进程的开始、中断和结束,当按下按钮时,引发一定的事件,从而执行相应的动作。
– Caption属性某个字母前加上,&”,则程序运行时标题中该字母带下划线,且带下划线的字母为快捷键,按住 Alt和带下划线的字符就可把焦点移动到相应的控件上并操作该按钮 。
– 在程序运行时,鼠标单击选中命令按钮;当其
Defalt属性设置为 True时,按 Enter键时选中命令按钮;当 Cancel属性设置成 True时,按 Esc键时也选中命令按钮。
其他属性能设置见表 5-5。
45
1,属性表 5-5 命令按钮的重要属性属性 描述
Appearance =1时,以三维效果绘制控件
BackColor,ForeColor 分别设置控件的背景色与文字图片的前景色
Cancel 用来指示窗体中命令按钮是事为取消按钮
Caption 设置按钮上显示的文字
DisabledPicture 设置命令按钮无效时显示的图像
DownPicture 当命令按钮被按下时显示的图像
Default 返回或设置一个值,以确定控件是否为窗体的缺省命令按钮
Enabled 确定控件是否能够对用户产生的事件做出反应,为 False时,不能反应
Picture 返回或设置控件中要显示的图片,当 Style=1时,显示图片
Style 指示控件的显示类型,Style=0,按钮上显示文字; =1,显示图形
ToolTipText 返回或设置一个工具提示
Value 是否选择该按钮
46
2,事件
鼠标单击命令按钮发生 Click事件。
在代码中也可以触发命令按钮控件,使之在程序运行时自动按下。
CancelButton.Value=True
执行该语句后,将在程序中调用 CancelButton_Click()
子程序。
当使用 Tab键切换,或单击对象,或在代码中用 SetFocus方法使命令按钮获得焦点时,发生
GotFocus事件。
当对象失去焦点时发生 LostFocus事件。
47
3,方法命令按钮具有 Move和 SetFocus等方法。在程序运行中,
Move方法可对象; SetFocus方法可以使命令按钮获得焦点。
例 5-6 新建一个标准 exe工程,按照表 5-6所示更改控件的属性,窗体布局如图 5-9( a) 所示。
(b) 按下鼠标的按钮图片
( a)例 4-6控件布局图图 4-9 例 4-6运行情况
48
表 5-6 例 5-6控件属性设置控件名称 控件属性 设置值
Form1 Caption 打开新窗体
Command1 Caption 打开 ( &O)
Command1 default True
Command2 Caption 关闭 ( &C)
Command2 Style 1-Graphical
Command2 Picture 图形文件名 1( 房子 )
Command2 DownPicture 图形文件名 2 ( 水果 )
Command3 Caption 退出 ( &X)
Command3 Cancel True
Form2 Caption 新窗体
Label1 Caption 这是新窗体 Form2
49
在命令按钮中写入以下代码:
Private Sub Command1_Click()
Load Form2
Form2.Show
End Sub
Private Sub Command2_Click()
Unload Form2
End Sub
Private Sub Command3_Click()
Unload Form1
End Sub
50
运行:
在 Forml窗体上,单击“打开 (O)”按钮,Form2
显示;单击“关闭 (C)”,则 Form2关闭;单击
“退出 (X)”,则退出程序。
注意,可 通过不同的方法来触发命令按钮控件
– 按,Enter”键或,Alt”+“O”键,触发,打开 (O)”按钮。
– 按,Esc”键退出程序。
– 对于图形按钮 command2,按下鼠标时,将显示另一图片,如图 5-9( b) 所示。
51
5.5 选择控件 -复选框与单选按钮
复选框控件( CheckBox)
一组复选框能够为每种对象提供多个选项,用户可从中选择一个或多个选项。
单选按钮控件( OptionButton) 是在出现多选一的情况下使用。
在同一容器中的一组单选按钮提供了选择的范围,
在任何情况下,有且只有一个单选按钮能够被选中。
52
单选按钮的 Value属性设置值为 True或 False。
– 当 Value=True时,表示选项被选中。
– 在一组单选按钮中,选中的控件的 VaIue值变成
True的同时,其他单选按钮的 Value属性将自动变成 False。
1,重要属性
( 1) Caption属性,即复选框或单按钮旁边的文本标题。
( 2) Value属性复选框,
单选钮,
表 5-7 复选框控件 Value属性设置值设置值 VB常数 说明
0 vbUnchecked 复选框未选中 ( 缺省值 )
1 vbChecked 复选框选中
2 vbGrayed 禁用复选框
53
2,事件复选框与单选按钮都能接收 Click事件。当用户单击复选框或单选按钮时,它们会自动改变状态。
例 5-7 复选框和单选按钮的应用。程序中,复选框选择文本框中显示的文字内容;单选按钮选择文本框内显示文字的字体、大小和颜色。
注意:
在界面设计中,分组框使用 Frame框架控件,作为复选框和单选按钮的容器。
界面设计如图 5 -10所示,各控件属性设置如表 5-
8所示。
54
5.6 选择控件 -列表框和组合框用于选择功能的控件除复选框和单选按钮外,还有 ListBox和 ComboBox控件。
5.6.1 列表框( ListBox)
– 列表框为用户提供了从一组固定的选项列表中进行一项或多项选择的功能 。
– 缺省时,将在单列列表中垂直显示选项,如果项目数目超过列表框可显示的数目,控件上将自动出现滚动条,这时用户可在列表中上、下、左、右滚动,
如图 5-11所示。
55
1,属性
( 1) List属性
List属性是用来访问列表的全部项目,它是以数组的方式存在的。列表中的每一项都是 List属性的一个元素。
例如,Listl.List(0)=,汉族”
' 把 Listl的第一行的文本定义为“汉族”。
List属性的设置:
– 属性窗口直接设置
– 在代码中通过 Additem方法来添加。
图 5-11 列表框
56
( 2) ListIndex属性
ListIndex属性的作用是设置或返回控件中 当前选定项目的索引 。
– ListIndex属性只能够在程序代码中调用和设置
– 可以与 List属性结合起来使用,共同确定列表框选定项目的文本。
List1.List(Listl.ListIndex)
' 为 List1当前选定的项目文本。
57
( 3) Text属性
Text属性用来直接返回当前选中的项目文本。
List1.Text和 List1.List(List1.ListIndex) 的结果完全相同。
– 如果只需要选中项目的文本内容,则用 Text属性即可。
– 如果需要对选定项目进行详细的描述,则使用 List
和 ListIndex属性能够表达得更详细 。
( 4) ListCount属性
ListCount属性返回列表框项目的数目,它只能在程序代码中调用和设置。 ListCount-1为最后一项的序号。
58
( 5) MultiSelect属性
MultiSelect 属性实现在列表中同时选择多个项目表 5-9 列表框 MultiSelect属性设置设置值 说明
0 -None ( 缺省值 ) 标准列表框,每次只能够选择一个项目
1 -Simple 简单多项选择 。 鼠标单击或按空格键表示选定或取消一个选择项
2 -Extended 扩充多项选择 。
59
扩充多项选择的方法有两种:
同时按下 Shift键和光标移动键,选择相连的多个项目。或者按下 Shift键的同时用鼠标点中相连项目的两端。
按下 Ctrl键,用鼠标逐个选中需要的项目。
图 5-12 多项选择状态
60
( 6) Selected属性该属性只能在程序中设置或引用 。
Selected属性是一个逻辑数组,其元素对应列表框中相应的项,表示对应的项在程序中运行期间是否被选中。
例如,
如果 List1.Selected(0)为 True表示第一项被选中,为
False表示未被选中。 List1.Selected
FalseTrue
FalseTrue
TrueFalse
TrueTrue
False
61
2,方法
( 1) AddItem方法
AddItem方法可以添加新的项目。
ListName.AddItem Item [,index]
– ListName是列表框的名称。
– Item是添加到列表中的字符串表达式。
– Index是指定在列表中插入新项目的位置。
例如; index为 0表示第一个位置,若省略 index,则将项目插入在末尾。
– 在程序运行的任何时候可以使用 AddItem方法动态地添加项目。
62
( 2) RemoveItem方法从列表框中删除一个选项。
Object.RemoveItem Index
– Object为列表框对象;
– Index是被删除项目在列表框中的位置,对于第 1个选项,Index为 0。
( 3) Clear方法删除列表框中的所有项目。 Clear方法经常在列表项目刷新时使用。
Object.Clear
63
3,事件列表框可以响应 C1ick和 DblClick事件。列表框和
“确定”命令按钮组合使用。
根据用户习惯:
– 单击鼠标操作代表选定一个项目
– 双击鼠标则起到选中项目后单击“确定”命令按钮的效果。
Private Sub List_DbClick()
Command1_Click
' 调用命令按钮单击事件处理子程序
End Sub
例 5-8,民族登记管理器”统计程序。
64
5.6.2 组合框 ( ComboBox)
组合框由一个选择列表和一个文本编辑域组成,
用户既可以像在文本框一样在组合框中直接输入文本来选定项目,也可从列表中选定项目。
组合框同时具备文本框和列表框的属性。
– 组合框的属性,Text,List,ListIndex、
ListCount和 Selected属性
– 方法,AddItem,RemoveItem,Clear
– 事件,Click,DbClick。
65
组合框另外具有与列表框不同的属性 Style,
组合框样式由 Style属性来控制,如表 5-11所示。
表 5-11 组合框 Style属性设置设置值 VB常数 说明
0 vbComboDropDown ( 缺省值 ) 下拉式组合框 。 包括一个下拉式列表和一个文本框
1 vbComboSimple 简单组合框 。 包括一个文本框和一个不能下拉的列表
2 vbComboDropDownList 下拉式列表框 。 仅允许从下拉式列表中选择例 5-9 影星薪金查询管理器程序。
66
5.7 滚动条滚动条有水平滚动条( HScrollBar) 和垂直滚动条 (VScrollBar)
5.7.1 属性
1,Max和 Min属性
Value属性的取值范围由 Max和 Min属性设置,Max代表
Value的最大值,Min代表 Value的最小值。 Value属性的缺省值为 0和 32767。
2,Value属性
Value属性值为滚动块在滚动条中位置的数值。
– 当滚动块处于最左边或最顶端时,Value取最小值。反之,
则 Value取最大值。
– 在中间的各个位置,Value值与位置是严格按照比例来设定的。
67
改变滚动条 Value属性的方法有 4种:
– 直接在属性窗口中设定 Value值;
– 鼠标单击两端箭头键改变滚动条数值;
– 将滚动块沿滚动条拖动到任意位置;
– 用鼠标单击滚动条中滚动块两侧的部分使滚动块以翻页的速度移动。
3,LargeChange和 SmallChange属性
Value属性增加或减少的长度是由 LargeChange和
SmallChange属性设定。
– 对于翻页滚动的方法可用 LargeChange属性设置
– 对于用滚动条两端箭头移动的情况可用 SmallChange属性设置。
68
5.7.2 事件
1,Change事件在滚动块移动后发生,它是滚动条最重要的事件。
2,Scroll事件移动滚动块时发生。单击滚动箭头或滚动条时不发生。
69
例 5-10 滚动条的使用。在窗体 Form1中添加表 5-13所示的控件及其属性值,使窗体结构如图 5-15所示。
在滚动条代码窗口中添加如下代码:
Private Sub HScroll1_Change( )
Label4.Caption =
HScroll1.Value
End Sub
在窗体代码窗口中添加如下代码:
Private Sub Form_Load( )
HScroll1.Value = Month(Now)
End Sub
在按钮控件代码窗口中添加如下代码:
Private Sub Command1_Click()
Unload Form1
End Sub
70
5.8 定时器
在程序设计中,对系统时钟定时响应,例如每隔一段时间就进行某种操作,通常使用定时器控件( Timer)。
定时器控件的响应事件是时间。加入定时器后,通过设置定时间隔属性 Interval来确定事件发生的时间。
1,重要属性
( 1) Interval属性
– Interval指定定时器事件发生的间隔毫秒数,间隔的取值在 0~64767之间,最长的间隔大约为 1分钟
– 当 Interval属性值为 0时屏蔽定时器。
( 2) Enabled属性 控制定时器是否生效。
2,事件 定时器控件只有一个 Timer事件。在一个 Timer控件的预定的时间间隔过去之后发生。
简单示例 例 5-11 用定时器控件设计交通红绿灯。
71
5.9 框架
在 VB6.0中,可以作为其他对象容器除窗体和图片控件外,还有框架控件( Frame)。
在容器中的控件,可以随载体同时移动,控件的位置也相对容器的位置而设置。
Frame控件不仅可以作为其他控件的载体,而且可用它将其他控件分成可标识的控件组。
例如,用 Frame控件把窗体按功能细分,分隔
OptionButton控件组等。
72
1,属性
( 1) Caption属性
Caption属性设定框架上的标题名称。如果 Caption为空字符,则框架为封闭的矩形框,但区别于矩形控件。
( 2) Enabled属性当 Enabled为 False时,程序运行时该框架在窗体中的标题正文为灰色,表示框架中的所有对象均被屏蔽,不允许用户对其进行操作。
( 3) Visible属性当 Visible为 False时,则程序运行时框架及其所有控件全部被隐蔽起来。
2,事件框架可以响应 Click和 DbClick事件,但应用程序中一般不需要编写框架的事件过程。
73
5.10 焦点与 TAB顺序
焦点( Focus) 是接收用户鼠标或键盘输入的能力。当对象具有焦点时,可接收用户的输入。
Windows界面上任一时刻可运行多个应用程序,
但只有具有焦点的应用程序才有活动标题栏,
才能接受用户输入。
在有多个 TextBox控件的 VB窗体中,只有具有焦点的 TextBox才接收由键盘输入的文本。
74
5.10.1 焦点事件
1,GotFocus事件
当对象获得焦点时产生 GotFocus事件。
在应用程序中可通过 Tab键切换或者单击对象等用户操作使对象获得焦点,也可在编码时使用 SetFocus方法使对象获得焦点。
注意:
控件只有在它的 Enabled属性和 Visible属性都设为 True时才能接收焦点。
75
2,LostFocus事件
LostFocus事件在对象失去焦点时发生。
它有三种引发方法:
– 由 TAB键切换或单击对象等用户操作引发
– 在编码时使用 SetFocus方法使对象失去焦点而引发。
LostFocus事件过程主要用来实现对对象的更新进行验证和确认。
例如,在焦点移离文本框时利用 LostFocus事件验证输入数据的有效性或是改变数据的格式等。
例:怎样使窗体一启动某控件就获得焦点
76
5.10.2 TAB顺序
按下 TAB或 Shift+TAB后,焦点从一个控件移动到另一个控件的次序就是 Tab键顺序。
控件的 TabIndex属性决定了它在 TAB键顺序中的位置。缺省时,第 1个建立的控件其
TabIndex值为 0,第 2个的 TabIndex值为 1,以此类推。当改变了一个控件的 TAB键顺序值,
VB自动对其它控件的 TAB键顺序重新编号,
以反映插入和删除的次序。设置控件的
TabIndex属性可以改变控件的 TAB键顺序。
77
例如:
在窗体上建立名为 Text1和 Text2的文本框,再建立一个名为 Command1的命令按钮。程序启动时,Text1具有焦点。按 TAB键将使焦点按控件建立的顺序在控件间移动。如果使 Command1变为 TAB键顺序中的首位,
即 TabIndex=0,则其它控件的 TabIndex值将自动向上调整,Text1.TabIndex=1,Text2.TabIndex=2。
注意:
不能获得焦点的控件以及无效的和不可见的控件不具有 TabIndex属性,因而不包含在 TAB键顺序中。按 TAB
键时,这些控件将被跳过。
例 5-12 演示在 TextBox获得或失去焦点(用 TAB键或鼠标)时改变颜色,并在 Label控件中显示相应的文字。
5.1 控件基本知识
5.2 文本控件
5.3 图形控件
5.4 按钮控件
5.5 选择控件 -复选框与单选按钮
5.6 选择控件 -列表框和组合框
5.7 滚动条
5.8 定时器
5.9 框架
5.10 焦点与 TAB顺序第 5章 常用标准控件
2
5.1 控件基本知识
Visual Basic的控件可广义地分为 3类:
– 标准控件
– ActiveX控件
– 可插入的对象。
3
5.1.1 标准控件
标准控件:也称内部控件,总是出现在工具箱中
显示工具箱:单击“视图 /工具箱”
菜单命令或工具栏的工具箱按钮图 5-1 Visual Basic工具箱
1
3
5
7
9
11
13
15
17
19
21
2
4
6
8
10
12
14
16
18
20
4
5.1.2 ActiveX控件
ActiveX是建立在微软的 Component
Object Model( CoM组件对象模型)上的技术框架。
ActiveX控件是 ActiveX部件的一种重要的类型。
ActiveX部件是一段可重复使用的编程代码和数据。共有 4种类型,ActiveX控件、
ActiveX.exe,ActiveX.dll,ActiveX文档。
5
ActiveX控件是 VB工具箱的扩充部分
ActiveX控件加到工具箱的步骤:
– 在“工程( Project),菜单中,单击“部件”以显示
“部件”对话框。
– 选定控件名称左边的复选框。
– 单击“确定”以关闭“部件”对话框。
所有选定的 ActiveX控件将出现在工具箱中。
6
添加 ActiveX过程示意图 5-2 添加 ActiveX控件
( a) 添加 ActiveX控件对话框 ( b) 添加控件后的工具箱添加的ActiveX
控件图标
7
5.1.3 ActiveX Dll代码部件
ActiveX DLL是 ActiveX部件的 4种类型之一。
要创建对于在 ActiveX DLL中定义的对象的引用,可以按以下步骤操作:
– 从“工程”菜单中选择“引用”。
– 在“引用”对话框中,选择 ActiveX部件的名称,
它包含在应用程序中使用的对象的。
– 可以使用“浏览”按钮来搜索包含所需对象的类型库文件(,tlb或,olb),可执行文件(,exe) 与动态链接库( DLLs) 也可以提供类型库。
8
5.1.4 可插入对象
可插入的对象,如 Microsoft Excel工作表对象 。 这些对象能添加到工具箱中,可以把它们当作控件使用 。
可插入对象的使用像代码部件一样,通过“工程”菜单的“引用”项将其添加到工程中,其操作也与代码部件相同。
9
5.2 文本控件标准控件 Label和 TextBox是用于显示和输入文本的。其中:
Label控件:只能在控件中显示文本。
TextBox控件:不仅能在控件中显示文本,
而且允许用户在程序运行中修改其中的文本。
10
5.2.1 标签
Label控件用于;
– 输出标题:用 Label来标注本身不具有
Caption属性的控件。
– 显示输出结果和标识窗体上的对象,如向用户提供帮助信息。
– 可编写代码改变 Label控件显示的文本内容以响应运行时的事件。
11
1,属性
Caption,Left,Top,Width,Height,Font,
Forecolor,Visible,Alignment,Appearance、
Autosize,BackColor,BackStyle,Borderstyle、
Enabled,Index,ToolTipText
( 1) Alignment属性设置 Label控件中文本的排列方式。其值为:
0,左对齐(缺省值);
1,右对齐;
2,居中对齐。
12
( 2) Appearance属性返回或设置控件在设计时的绘图风格。其值可选择:
0,平面绘制控件和没有可视化效果的窗体;
1,(缺省值) 3D,带有三维效果的绘制控件。
( 3) Autosize属性返回或设置一个值,以决定控件是否自动改变大小以显示其全部内容。其值为:
True,自动改变控件大小以显示全部内容;
False( 缺省值),保持控件大小不变,超出控件区域的内容被裁剪掉。
13
( 4) BackColor属性返回或设置对象的背景颜色,设置方式和设置值 Forecolor属性一致。
( 5) BackStyle属性返回或设置对象的边框样式。其值为:
0(缺省值),None无边框;
1,FixedSingle固定单边框。
14
( 6) Enabled属性返回或设置一个值,用来确定控件是否能够对用户产生的事件做出反应 。 其值为:
True,( 缺省 ) 允许对象对事件做出反应;
False,阻止对象对事件做出反应 。
( 7) Index属性返回或设置唯一地标识控件数组中一个控件的编号 。
其值为:
No value,( 缺省 ) 不是控件数组的元素;
0~32767,是数组的元素,控件数组中的所有控件具有相同的 Name属性 。 VB自动地分配在控件数组中有效的下一个整数 。
( 8) ToolTipText属性返回或设置一个工具提示。
设计时,可以在控件的 ToolTipText属性中设置字符串 。
15
3,事件
Label控件有 DblClick,Change,MouseMove、
MouseDown及 MouseUp 事件。
( 1) DbClick事件当在对象上双击鼠标按钮时,该事件发生 。
语法:
Private Sub object_DblClick (index As Integer)
object为事件发生的 Label对象名称;
index为整数,用来唯一地标识一个在控件数组中控件 。
注意:双击时 DblClick事件发生在 Click事件之后。
16
( 2) Change事件当 Label的 Caption属性的值发生改变时此事件发生 。 语法:
Private Sub object_Change([index As Integer])
Change事件可协调在各控件间显示的数据或使它们同步。
17
( 3) MouseMove事件 ( 详见第 9章 )
移动鼠标时发生该事件 。 语法:
Private Sub object_MouseMove([ index As Integer,] button As Integer,shift
As Integer,x As Single,y As Single)
– button为一个整数,它对应鼠标各个按钮的状态:
button=1,左按钮按下;
button=2,右按钮按下;
button=4,中间按钮按下;
button=0,无键按下 。
MouseMove事件参数:
– shift为一个整数,它对应于 SHIFT,CTRL,ALT键的状态:
shift=1,SHIFT键按下;
shift=2,CTRL键按下;
shift=4,ALT键按下 。
shift=0,SHIFT,CTRL,ALT都没按
shift=2+4=6,CTRL,ALT键同时按下
– x和 y指定鼠标当前位置,其值由窗体的坐标系统确定 。
18
( 4) MouseDown,MouseUp事件
( 详见第 9章 )
当按下鼠标按钮时,MouseDown事件发生,释放鼠标按钮时 MouseUp事件发生 。 语法:
– Private Sub object_MouseUp([index As Integer,] button
As Integer,shift As Integer,x As Single,y As Single)
– Private Sub object_MouseDown([index As Integer,]
button As Integer,shift As Integer,x As Single,y As
Single)
19
2,方法
ZOrder将指定控件放置在其图层的 Z方向 ( 垂直于平面的方向 ) 的前端或后端:
Label1.ZOrder 1 '将对象 Label1置于后端
Label1.ZOrder 0 '将对象 Label1置于前端
20
例 5-1 窗体上有红、绿、黄 3种颜色的文字,鼠标每双击一次文字区,文字的颜色就改变一次。
Private Sub Label1_DblClick()
Label1.ZOrder 1
End Sub
Private Sub Label2_DblClick()
Label2.ZOrder 1
End Sub
Private Sub Label3_DblClick()
Label3.ZOrder 1
End Sub
图 5-3 Label控件
21
5.2.2 文本框 TextBox
文本框控件称为编辑字段或者编辑控件,用于文本编辑,用户可以在该控件区域内输入、编辑、修改和显示文本内容。
1,TextBox控件的属性
TextBox控件的 Alignment,Appearance,Autosize、
BackColor,BackStyle,Borstyle,Enabled,Index,
Font属性及参数设置与 Label的对应属性相同。
22
( 1) MultiLine属性设置是否可以输入多行文本,取值,
True,具有自动换行功能;
False,只允许输入一行,一旦超过文本框宽 度时,超过部分不显示
( 2) ScrollBars属性设置滚动条模式,有 4种选择:
0,无滚动条;
1,水平滚动条;
2,垂直滚动条;
3,水平和垂直滚动条。
23
( 3) SelLength属性选中的字符数,只能在代码中使用,值为 0时,表示未选中任何字符。
( 4) SelStart属性选择文本的起始位置,只能在代码中使用,第一个字符的位置为 0,第二个字符的位置为 1。
( 5) SelText属性选中的文本框的字符串,只能在代码中使用。
24
2,TextBox控件的常用事件
TextBox的方法,SetFocus,Move,ZOrder。
例 5-2 乘法运算器界面设计。
图 5-4 乘法运算器窗体设计
25
5个标签分别用于标识 3个文本框和 2个运算符号:
Label1.Caption=“乘数”
Label2.Caption=“被乘数”
Label3.Caption=“积”
Label4.Caption="*“
Label5.Caption="="
Form1的标题设为“乘法器”:
form1.Caption=“乘法器”
3个命令按钮标题分别设为“求积”、“清空”和“结束”:
Command1.Caption="求积 "
Command2.Caption="清空 "
Command3.Caption="结束 "
26
5.3 图形控件
VB 6.0包含 4个图形控件:
– pictureBox控件
– Image控件
– Shape控件
– Line控件其中,Image,Shape和 Line控件被称作轻量图形控件,它们只支持 PictureBox的属性、方法和事件的一个子集。
27
5.3.1图片框、图像框的属性、事件和方法
PictureBox称为图片框
Image控件称为图像框。
图片框和图像框可以显示的图像文件格式有:
位图文件、图标文件、图元文件,JPEG格式文件、
GIF格式文件。
28
1,图片框的常用属性、事件与方法
( 1) PictureBox控件属性
① Picture属性
Picture属性可设置被显示的图片文件名,运行时使用
LoadPicture函数载入图形
② AutoSize属性该属性决定控件是否自动改变大小以显示其全部内容
③ ScaleLeft,ScaleTop,ScaleWidth,ScaleHeight和
ScaleMode属性
ScaleLeft和 ScaleTop设置左上角坐标 ;ScaleWidth和
ScaleHeight在现有的有效绘图区域确定新坐标系的刻度。
29
ScaleMode属性可决定对象坐标使用的度量单位。
表 4-3 ScaleMode属性值 含义
1 缇,twip( 缺省 ) 1/1440英寸,1/567厘米
2 磅,point,1/72英寸
3 象素,pixel
4 字符
5 英寸
6 毫米
7 厘米
将 ScaleMode设为大于 0的值,会使 ScaleTop,ScaleLeft自动为 0;
修改其他任何 Scale属性都会使 ScaleMode为 0 (自定义)
例
30
例 5-3 在窗体上设置一个图片框 Picture1,其
Width与 Height分别为 4000与 3000,将 Picture1的坐标系统的原点坐标设置在图形区域的中点,并以坐标原点为圆心画半径为 1000缇的圆。
设置坐标属性为:
Picture1.ScaleWidth=2000
Picture1.ScaleHeight=1500
Picture1.ScaleLeft=-1000
Picture1.ScaleTop=-750
'左上角坐标 (-1000,-750)
'即坐标系统原点在图形区域的中点
Private Sub Picture1_Click()
Picture1.Circle (0,0),500,vbBlack
End Sub
图 5-5 坐标系统设置
31
④ PictureBox控件作为容器
PictureBox控件可以用作其它控件的容器。在
PictureBox控件上面可以加上其它控件,这些控件随
PictureBox移动而移动,其 Top和 Left属性是相对
PictureBox而言,与窗体无关。
32
( 2)图片框的常用事件
– 图片框的常用事件有,Click,DBClick,Change、
鼠标事件、键盘事件
( 3) PictureBox控件的常用方法
① Line方法在对象上画直线和矩形 。 语法:
object.Line [Step] (x1,y1)-[Step] (x2,y2),[color],
[B][F]
其中,object为 PictureBox对象; ( x1,y1) 为线段的起点或矩形的左上角坐标; ( x2,y2) 为线段的终点或矩形的右下角坐标; Step指相对于线的起点的终点坐标 ;B表示画矩形; F表示用画矩形的颜色来填充矩形 ;用 F则必须用 B。 若只用 B而不用 F,则矩形的填充由 FillColor和 FillStyle属性决定 。
例
33
例 5-4 Line方法在窗体上画同心矩形。
【分析】在窗体上设置一个 PictureBox控件,用 Line方法以不同的颜色画 25个同心矩形,并以同色填充,颜色的由函数 QBColor设置,线条宽度由属性 DrawWidth确定。
图 5-6 同心矩形
34
② Circle方法在对象上画圆,椭圆或弧 。 语法:
object.Circle [Step] (x,y),radius,[color,start,end,aspect]
其中,( x,y) 为 Single类型,是圆、椭圆或弧的中心坐标; step表示采取当前作图位置的相对值; start、
end分别表示起始角度、终止角度,取值为 0~2?时,
画圆弧,取值为负值时,画扇形,负号表示画圆心到圆弧的径向线; aspect长短轴比率,默认值为 1,
画圆,大于或小于 1时,画椭圆。
Circle(15,15),15 ' 画一个半径为 15的圆
Circle(15,15),15,,,,0.5 '画纵轴与横轴之比为 0.5的椭圆。
35
③ Cls方法清除运行时 PictureBox所生成的图形和文本。
④ Point与 Pset方法
– Point用于返回图形框上指定点的 RGB颜色,若指定点在对象外面,则返回值为 -1,该方法对图象控件无效。
– Pset用于在图形框指定位置画点。
object.Point(x,y)
object.PSet [Step] (x,y),[color]
其中:
( x,y) 为所画点的坐标; Step为当前作图的相对值 。
例 5-5 用 Pset方法画函数曲线 。
36
⑤ Print方法利用 PictureBox控件的 Print方法,可以在控件中打印文本、
图像、动画。
语法,object.Print [outputlist]
outputlist的格式为:
{Spc(n) | Tab(n)} expression charpos
– Spc(n)表示插入 n个空格; Tab(n)表示插入点定位在绝对列号 n上;
– expression为要输出的表达式; charpos为下一个字符的输出位置 。 多个表达式可以用空白或分号来分隔 。
37
2,图像框的常用属性、事件与方法
Image控件也用来显示图形。
Image使用较少的系统资源,所以重画起来比
PictureBox控件要快。
Image只支持 PictureBox控件的一部分属性、事件和方法。
可以把 Image控件放在其它容器里,但是 Image
控件本身不能作为容器使用。
38
( 1) Image控件属性
Picture属性确定控件显示的内容。
Stretch属性来指定一个图形是否要调整大小,
– 当值为 True时,图形调整大小以与控件相适合;
– 当值为 False时,控件调整大小以与图形相适应。
Image控件没有 ScaleLeft,ScaleTop、
ScaleWidth,ScaleHeight和 ScaleMode属性。不能设置对象的坐标系统,
39
( 2) Image控件事件
– Image控件具有 Click事件,DbClick事件、鼠标事件、
键盘事件
– 没有 Change事件,在程序运行过程中,不会因为 Picture
属性的改变而发生 Change事件。
( 3) Image控件方法
– Image控件只具有 Move,Refresh,ZOrder等方法,不支持 PictureBox控件的图形方法。
40
5.3.2图形文件的装入利用函数 LoadPicture将图形载入 PictureBox或 Image控件。
语法:
LoadPicture([filename],[size],[colordepth],[x,y])
– filename指定图片文件名;
– 如果 filename是光标或图标文件,size指定图象大小,
colordepth指定颜色深度,( x,y) 指定光标或图标的宽度与高度。
例如:
– PicSample.Picture= LoadPicture("D:\usos\cap.bmp")
– Image1.Picture = LoadPicture("c:\Windows\Winlogo.cur",
vbLPLarge,vbLPColor)
vbLPLarge,vbLPColor分别表示载入的光标使用系统大图标和
256色。
– 运行时从 PictureBox或 Image控件中删除图形:
Image1.Picture = LoadPicture或 LoadPicture( )或 LoadPicture("")
41
5.3.3 直线与形状
Shape,Line控件为轻量图形控件,们比
PictureBox控件显示速度快并且包含
PictureBox控件的属性、方法、事件的子集。
Shape控件和 Line控件不支持任何事件。
42
Shape控件的 Shape属性表 5-4 Shape控件的预定义图形图形名称 数值 常量矩形 0 vbShapeRectangle
正方形 1 vbShapeSquare
椭圆形 2 vbShapeOval
圆形 3 vbShapeCircle
圆角矩形 4 vbShapeRoundedRectangle
圆角正方形 5 vbShapeRoundedSquare
图 5-8 Shape属性确定的形状
43
使用 FillStyle属性,可以对图形进行填充。
预定义的填充格式包括:实线、透明线、水平线、垂直线、
向上对角线、向下对角线、十字线、对角十字线。
通过使用 BorderStyle属性,可以设置图形的边框格式 。
预定义的格式包括:透明、实线、虚线、点线、点划线、
双点划线、内实线。
Line控件可在窗体中画直线。
BorderWidth属性调节直线的粗细; BorderStyle属性决定直线的线型; BorderColor确定直线的颜色; X1,X2、
Y1,Y2属性控制线的两个端点的位置。
44
5.4 按钮控件命令按钮可以控制一个进程的开始、中断和结束,当按下按钮时,引发一定的事件,从而执行相应的动作。
– Caption属性某个字母前加上,&”,则程序运行时标题中该字母带下划线,且带下划线的字母为快捷键,按住 Alt和带下划线的字符就可把焦点移动到相应的控件上并操作该按钮 。
– 在程序运行时,鼠标单击选中命令按钮;当其
Defalt属性设置为 True时,按 Enter键时选中命令按钮;当 Cancel属性设置成 True时,按 Esc键时也选中命令按钮。
其他属性能设置见表 5-5。
45
1,属性表 5-5 命令按钮的重要属性属性 描述
Appearance =1时,以三维效果绘制控件
BackColor,ForeColor 分别设置控件的背景色与文字图片的前景色
Cancel 用来指示窗体中命令按钮是事为取消按钮
Caption 设置按钮上显示的文字
DisabledPicture 设置命令按钮无效时显示的图像
DownPicture 当命令按钮被按下时显示的图像
Default 返回或设置一个值,以确定控件是否为窗体的缺省命令按钮
Enabled 确定控件是否能够对用户产生的事件做出反应,为 False时,不能反应
Picture 返回或设置控件中要显示的图片,当 Style=1时,显示图片
Style 指示控件的显示类型,Style=0,按钮上显示文字; =1,显示图形
ToolTipText 返回或设置一个工具提示
Value 是否选择该按钮
46
2,事件
鼠标单击命令按钮发生 Click事件。
在代码中也可以触发命令按钮控件,使之在程序运行时自动按下。
CancelButton.Value=True
执行该语句后,将在程序中调用 CancelButton_Click()
子程序。
当使用 Tab键切换,或单击对象,或在代码中用 SetFocus方法使命令按钮获得焦点时,发生
GotFocus事件。
当对象失去焦点时发生 LostFocus事件。
47
3,方法命令按钮具有 Move和 SetFocus等方法。在程序运行中,
Move方法可对象; SetFocus方法可以使命令按钮获得焦点。
例 5-6 新建一个标准 exe工程,按照表 5-6所示更改控件的属性,窗体布局如图 5-9( a) 所示。
(b) 按下鼠标的按钮图片
( a)例 4-6控件布局图图 4-9 例 4-6运行情况
48
表 5-6 例 5-6控件属性设置控件名称 控件属性 设置值
Form1 Caption 打开新窗体
Command1 Caption 打开 ( &O)
Command1 default True
Command2 Caption 关闭 ( &C)
Command2 Style 1-Graphical
Command2 Picture 图形文件名 1( 房子 )
Command2 DownPicture 图形文件名 2 ( 水果 )
Command3 Caption 退出 ( &X)
Command3 Cancel True
Form2 Caption 新窗体
Label1 Caption 这是新窗体 Form2
49
在命令按钮中写入以下代码:
Private Sub Command1_Click()
Load Form2
Form2.Show
End Sub
Private Sub Command2_Click()
Unload Form2
End Sub
Private Sub Command3_Click()
Unload Form1
End Sub
50
运行:
在 Forml窗体上,单击“打开 (O)”按钮,Form2
显示;单击“关闭 (C)”,则 Form2关闭;单击
“退出 (X)”,则退出程序。
注意,可 通过不同的方法来触发命令按钮控件
– 按,Enter”键或,Alt”+“O”键,触发,打开 (O)”按钮。
– 按,Esc”键退出程序。
– 对于图形按钮 command2,按下鼠标时,将显示另一图片,如图 5-9( b) 所示。
51
5.5 选择控件 -复选框与单选按钮
复选框控件( CheckBox)
一组复选框能够为每种对象提供多个选项,用户可从中选择一个或多个选项。
单选按钮控件( OptionButton) 是在出现多选一的情况下使用。
在同一容器中的一组单选按钮提供了选择的范围,
在任何情况下,有且只有一个单选按钮能够被选中。
52
单选按钮的 Value属性设置值为 True或 False。
– 当 Value=True时,表示选项被选中。
– 在一组单选按钮中,选中的控件的 VaIue值变成
True的同时,其他单选按钮的 Value属性将自动变成 False。
1,重要属性
( 1) Caption属性,即复选框或单按钮旁边的文本标题。
( 2) Value属性复选框,
单选钮,
表 5-7 复选框控件 Value属性设置值设置值 VB常数 说明
0 vbUnchecked 复选框未选中 ( 缺省值 )
1 vbChecked 复选框选中
2 vbGrayed 禁用复选框
53
2,事件复选框与单选按钮都能接收 Click事件。当用户单击复选框或单选按钮时,它们会自动改变状态。
例 5-7 复选框和单选按钮的应用。程序中,复选框选择文本框中显示的文字内容;单选按钮选择文本框内显示文字的字体、大小和颜色。
注意:
在界面设计中,分组框使用 Frame框架控件,作为复选框和单选按钮的容器。
界面设计如图 5 -10所示,各控件属性设置如表 5-
8所示。
54
5.6 选择控件 -列表框和组合框用于选择功能的控件除复选框和单选按钮外,还有 ListBox和 ComboBox控件。
5.6.1 列表框( ListBox)
– 列表框为用户提供了从一组固定的选项列表中进行一项或多项选择的功能 。
– 缺省时,将在单列列表中垂直显示选项,如果项目数目超过列表框可显示的数目,控件上将自动出现滚动条,这时用户可在列表中上、下、左、右滚动,
如图 5-11所示。
55
1,属性
( 1) List属性
List属性是用来访问列表的全部项目,它是以数组的方式存在的。列表中的每一项都是 List属性的一个元素。
例如,Listl.List(0)=,汉族”
' 把 Listl的第一行的文本定义为“汉族”。
List属性的设置:
– 属性窗口直接设置
– 在代码中通过 Additem方法来添加。
图 5-11 列表框
56
( 2) ListIndex属性
ListIndex属性的作用是设置或返回控件中 当前选定项目的索引 。
– ListIndex属性只能够在程序代码中调用和设置
– 可以与 List属性结合起来使用,共同确定列表框选定项目的文本。
List1.List(Listl.ListIndex)
' 为 List1当前选定的项目文本。
57
( 3) Text属性
Text属性用来直接返回当前选中的项目文本。
List1.Text和 List1.List(List1.ListIndex) 的结果完全相同。
– 如果只需要选中项目的文本内容,则用 Text属性即可。
– 如果需要对选定项目进行详细的描述,则使用 List
和 ListIndex属性能够表达得更详细 。
( 4) ListCount属性
ListCount属性返回列表框项目的数目,它只能在程序代码中调用和设置。 ListCount-1为最后一项的序号。
58
( 5) MultiSelect属性
MultiSelect 属性实现在列表中同时选择多个项目表 5-9 列表框 MultiSelect属性设置设置值 说明
0 -None ( 缺省值 ) 标准列表框,每次只能够选择一个项目
1 -Simple 简单多项选择 。 鼠标单击或按空格键表示选定或取消一个选择项
2 -Extended 扩充多项选择 。
59
扩充多项选择的方法有两种:
同时按下 Shift键和光标移动键,选择相连的多个项目。或者按下 Shift键的同时用鼠标点中相连项目的两端。
按下 Ctrl键,用鼠标逐个选中需要的项目。
图 5-12 多项选择状态
60
( 6) Selected属性该属性只能在程序中设置或引用 。
Selected属性是一个逻辑数组,其元素对应列表框中相应的项,表示对应的项在程序中运行期间是否被选中。
例如,
如果 List1.Selected(0)为 True表示第一项被选中,为
False表示未被选中。 List1.Selected
FalseTrue
FalseTrue
TrueFalse
TrueTrue
False
61
2,方法
( 1) AddItem方法
AddItem方法可以添加新的项目。
ListName.AddItem Item [,index]
– ListName是列表框的名称。
– Item是添加到列表中的字符串表达式。
– Index是指定在列表中插入新项目的位置。
例如; index为 0表示第一个位置,若省略 index,则将项目插入在末尾。
– 在程序运行的任何时候可以使用 AddItem方法动态地添加项目。
62
( 2) RemoveItem方法从列表框中删除一个选项。
Object.RemoveItem Index
– Object为列表框对象;
– Index是被删除项目在列表框中的位置,对于第 1个选项,Index为 0。
( 3) Clear方法删除列表框中的所有项目。 Clear方法经常在列表项目刷新时使用。
Object.Clear
63
3,事件列表框可以响应 C1ick和 DblClick事件。列表框和
“确定”命令按钮组合使用。
根据用户习惯:
– 单击鼠标操作代表选定一个项目
– 双击鼠标则起到选中项目后单击“确定”命令按钮的效果。
Private Sub List_DbClick()
Command1_Click
' 调用命令按钮单击事件处理子程序
End Sub
例 5-8,民族登记管理器”统计程序。
64
5.6.2 组合框 ( ComboBox)
组合框由一个选择列表和一个文本编辑域组成,
用户既可以像在文本框一样在组合框中直接输入文本来选定项目,也可从列表中选定项目。
组合框同时具备文本框和列表框的属性。
– 组合框的属性,Text,List,ListIndex、
ListCount和 Selected属性
– 方法,AddItem,RemoveItem,Clear
– 事件,Click,DbClick。
65
组合框另外具有与列表框不同的属性 Style,
组合框样式由 Style属性来控制,如表 5-11所示。
表 5-11 组合框 Style属性设置设置值 VB常数 说明
0 vbComboDropDown ( 缺省值 ) 下拉式组合框 。 包括一个下拉式列表和一个文本框
1 vbComboSimple 简单组合框 。 包括一个文本框和一个不能下拉的列表
2 vbComboDropDownList 下拉式列表框 。 仅允许从下拉式列表中选择例 5-9 影星薪金查询管理器程序。
66
5.7 滚动条滚动条有水平滚动条( HScrollBar) 和垂直滚动条 (VScrollBar)
5.7.1 属性
1,Max和 Min属性
Value属性的取值范围由 Max和 Min属性设置,Max代表
Value的最大值,Min代表 Value的最小值。 Value属性的缺省值为 0和 32767。
2,Value属性
Value属性值为滚动块在滚动条中位置的数值。
– 当滚动块处于最左边或最顶端时,Value取最小值。反之,
则 Value取最大值。
– 在中间的各个位置,Value值与位置是严格按照比例来设定的。
67
改变滚动条 Value属性的方法有 4种:
– 直接在属性窗口中设定 Value值;
– 鼠标单击两端箭头键改变滚动条数值;
– 将滚动块沿滚动条拖动到任意位置;
– 用鼠标单击滚动条中滚动块两侧的部分使滚动块以翻页的速度移动。
3,LargeChange和 SmallChange属性
Value属性增加或减少的长度是由 LargeChange和
SmallChange属性设定。
– 对于翻页滚动的方法可用 LargeChange属性设置
– 对于用滚动条两端箭头移动的情况可用 SmallChange属性设置。
68
5.7.2 事件
1,Change事件在滚动块移动后发生,它是滚动条最重要的事件。
2,Scroll事件移动滚动块时发生。单击滚动箭头或滚动条时不发生。
69
例 5-10 滚动条的使用。在窗体 Form1中添加表 5-13所示的控件及其属性值,使窗体结构如图 5-15所示。
在滚动条代码窗口中添加如下代码:
Private Sub HScroll1_Change( )
Label4.Caption =
HScroll1.Value
End Sub
在窗体代码窗口中添加如下代码:
Private Sub Form_Load( )
HScroll1.Value = Month(Now)
End Sub
在按钮控件代码窗口中添加如下代码:
Private Sub Command1_Click()
Unload Form1
End Sub
70
5.8 定时器
在程序设计中,对系统时钟定时响应,例如每隔一段时间就进行某种操作,通常使用定时器控件( Timer)。
定时器控件的响应事件是时间。加入定时器后,通过设置定时间隔属性 Interval来确定事件发生的时间。
1,重要属性
( 1) Interval属性
– Interval指定定时器事件发生的间隔毫秒数,间隔的取值在 0~64767之间,最长的间隔大约为 1分钟
– 当 Interval属性值为 0时屏蔽定时器。
( 2) Enabled属性 控制定时器是否生效。
2,事件 定时器控件只有一个 Timer事件。在一个 Timer控件的预定的时间间隔过去之后发生。
简单示例 例 5-11 用定时器控件设计交通红绿灯。
71
5.9 框架
在 VB6.0中,可以作为其他对象容器除窗体和图片控件外,还有框架控件( Frame)。
在容器中的控件,可以随载体同时移动,控件的位置也相对容器的位置而设置。
Frame控件不仅可以作为其他控件的载体,而且可用它将其他控件分成可标识的控件组。
例如,用 Frame控件把窗体按功能细分,分隔
OptionButton控件组等。
72
1,属性
( 1) Caption属性
Caption属性设定框架上的标题名称。如果 Caption为空字符,则框架为封闭的矩形框,但区别于矩形控件。
( 2) Enabled属性当 Enabled为 False时,程序运行时该框架在窗体中的标题正文为灰色,表示框架中的所有对象均被屏蔽,不允许用户对其进行操作。
( 3) Visible属性当 Visible为 False时,则程序运行时框架及其所有控件全部被隐蔽起来。
2,事件框架可以响应 Click和 DbClick事件,但应用程序中一般不需要编写框架的事件过程。
73
5.10 焦点与 TAB顺序
焦点( Focus) 是接收用户鼠标或键盘输入的能力。当对象具有焦点时,可接收用户的输入。
Windows界面上任一时刻可运行多个应用程序,
但只有具有焦点的应用程序才有活动标题栏,
才能接受用户输入。
在有多个 TextBox控件的 VB窗体中,只有具有焦点的 TextBox才接收由键盘输入的文本。
74
5.10.1 焦点事件
1,GotFocus事件
当对象获得焦点时产生 GotFocus事件。
在应用程序中可通过 Tab键切换或者单击对象等用户操作使对象获得焦点,也可在编码时使用 SetFocus方法使对象获得焦点。
注意:
控件只有在它的 Enabled属性和 Visible属性都设为 True时才能接收焦点。
75
2,LostFocus事件
LostFocus事件在对象失去焦点时发生。
它有三种引发方法:
– 由 TAB键切换或单击对象等用户操作引发
– 在编码时使用 SetFocus方法使对象失去焦点而引发。
LostFocus事件过程主要用来实现对对象的更新进行验证和确认。
例如,在焦点移离文本框时利用 LostFocus事件验证输入数据的有效性或是改变数据的格式等。
例:怎样使窗体一启动某控件就获得焦点
76
5.10.2 TAB顺序
按下 TAB或 Shift+TAB后,焦点从一个控件移动到另一个控件的次序就是 Tab键顺序。
控件的 TabIndex属性决定了它在 TAB键顺序中的位置。缺省时,第 1个建立的控件其
TabIndex值为 0,第 2个的 TabIndex值为 1,以此类推。当改变了一个控件的 TAB键顺序值,
VB自动对其它控件的 TAB键顺序重新编号,
以反映插入和删除的次序。设置控件的
TabIndex属性可以改变控件的 TAB键顺序。
77
例如:
在窗体上建立名为 Text1和 Text2的文本框,再建立一个名为 Command1的命令按钮。程序启动时,Text1具有焦点。按 TAB键将使焦点按控件建立的顺序在控件间移动。如果使 Command1变为 TAB键顺序中的首位,
即 TabIndex=0,则其它控件的 TabIndex值将自动向上调整,Text1.TabIndex=1,Text2.TabIndex=2。
注意:
不能获得焦点的控件以及无效的和不可见的控件不具有 TabIndex属性,因而不包含在 TAB键顺序中。按 TAB
键时,这些控件将被跳过。
例 5-12 演示在 TextBox获得或失去焦点(用 TAB键或鼠标)时改变颜色,并在 Label控件中显示相应的文字。