第 6章 常用控件与多窗体第 3章介绍了窗体的使用及最基本控件的属性,事件和方法 。 本章介绍另外的几个常用控件以及多窗体 。
主要内容有:图片框与图像框,定时器,单选钮与复选框,框架,列表框与组合框滚动条,焦点与 Tab顺序,多窗体 。
退出
6.1 图片框与图像框
6.2 定时器
6.3 单选钮与复选框
6.4 容器与框架
6.5 列表框与组合框
6.6 滚动条
6.7 焦点与 Tab顺序
6.8 多窗体
6.1 图片框与图像框图 片 框 控 件 ( PictureBox ) 和 图 像 框 控 件
( ImageBox) 主要用于在窗体的指定位置显示图形信息 。 VB 6.0支持,bmp,.ico,.wmf,.emf,.jpg,.gif
等格式的图形文件 。
6.1.1 图片框,图像框的常用属性
1,Picture属性图片框和图像框中显示的图片由 Picture属性决定 。
图形文件可以在设计阶段装入,也可以在运行期间装入 。
( 1)在设计阶段装入在设计阶段,可以用属性窗口中的 Picture 属性装入图形文件。
( 2)在运行期间装入在运行期间,可以用 LoadPicture函数把图形文件装入图片框或图像框中。语句格式如下:
对象名,Picture=LoadPicture( [filename])
2,AutoSize属性该属性用于图片框。决定控件是否自动改变大小以显示图像全部内容。缺省值为 False,此时保持控件大小不变,超出控件区域的内容被裁减掉;若值为
True时,自动改变控件大小以显示图片全部内容(注意:不是图形改变大小)。
3,stretch 属性用于图像框。当该属性的取值为 False时,图像控件将自动改变大小以与图形的大小相适应;当其值为
True时,显示在控件中的图像的大小将完全适合于控件的大小,这时,图片可能会变形。
6.1.2 图片框、图像框的区别
( 1)图片框控件可以作为其它控件的容器。
( 2) 图片框可以通过 Print方法接收文本,而图像框则不能接收用 Print方法输入的信息 。
( 3) 图像框比图片框占用的内存少,显示速度快 。
6.2 定时器
VB提供了一种叫定时器 ( Timer) 的控件 。 定时器每隔一定的时间间隔就产生一次 Timer事件 ( 可理解为报时 ),用户可以根据这个特性设置时间间隔控制某些操作或用于计时 。
1.属性定时器控件的属性不是很多,最常用的是 Interval
属性,该属性用来决定两次调用定时器的间隔,以 ms
为单位,取值范围为 0~ 65535,所以最大时间间隔不能超过 66s,该属性的缺省值为 0,即定时器控件不起作用 。 如果希望每秒产生 n个事件,则应设置属性
Interval的值为 1000/n。
2.事件定时器只支持 Timer事件。对于一个含有定时器控件的窗体,每经过一段由属性 Interval指定的时间间隔,
就产生一个 Timer事件。
【 例 6.2】 建立数字计时器,要求每秒钟时间变化一次 。
设计界面:
在窗体上添加一个定时器控件,一个标签,并按表 6-1设置属性 。
程序代码如下:
Private Sub Timer1_Timer( )
Label1.FontSize = 48
Label1.Caption = Time '将 Time函数返回的系统时间显示在标签中
End Sub
执行结果如下图 6-3所示,每隔 1s钟显示一次时间 。
6.3 单选钮与复选框有时希望在应用程序的界面上提供一些项目,让用户从几个选项中选择其中之一,这就要用,单选钮,
控件 。 如果有多个选择框,每个选择框都是独立的,
互不影响的,用户可以任意选择它们的状态组合,则可以用,复选框,控件 。
6.3.1 单选钮单选钮 ( OptionButton) 通常成组出现,主要用于处理,多选一,的问题 。 用户在一组单选钮中必须选择一项,并且最多只能选择一项 。 当某一项被选定后,其左边的圆圈中出现一个黑点 。 例如,图 6-4所示就是一组单选钮,用户只能在这 3个单选钮选项中选择一个 。
1.属性
( 1) Value属性该属性表示单选按钮选中或不被选中的状态 。
True为选中; False为不被选中 。
( 2) Caption属性该属性显示出现在单选钮旁边的文本 。
( 3) Style属性该属性用来设置控件的外观 。 值为 0时,控件显示如图 6-4所示标准样式;值为 1时,控件外观类似命令按钮 。
一般说来,单选钮总是作为一个组 ( 单选钮组 )
发挥作用的 。 图 6-4关于颜色的单选钮就是一个按钮组 。
2.事件单选钮常用事件是 Click事件。
【 例 6.4】 程序运行后,单击某个单选钮,在标签中显示相应的字体。运行结果如图 6-5所示。
分析:需要在窗体上建立一个标签和 3个单选钮,
其主要属性设置如表 6-2所示。
事件过程代码如下:
Private Sub kai_Click( )
Label1.FontName = "楷体 _gb2312"
End Sub
Private Sub li_Click( )
Label1.FontName = "隶书 "
End Sub
Private Sub song_Click( )
Label1.FontName = "宋体 "
End Sub
6.3.2 复选框复选框 ( CheckBox) 也称检查框,单击复选框一次时被选中,左边出现,√” 号,再次单击则取消选中,
清除复选框中的,√” 。 可同时使多个复选框处于选中状态,这一点和单选按钮不同 。 如图 6-6所示,有四个复选框 。
1.属性
( 1) Value属性决定复选框的状态,0— 未选中,1— 已选中,2— 变灰暗 。
( 2) Picture属性用来指定当复选框被设计成图形按钮时的图像 。
2.事件复选框常用事件为 Click事件 。
【 例 6.5】 用复选框控制文本是否加下划线和斜体显示。在程序执行期间,如果选定“加下划线”复选框,则文本框中的内容就加上了下划线,如果清除
“加下划线”复选框,则文本框中的内容就没有下划线;如果选定“斜体”复选框,则文本框中的文字字形就变成斜体,如果清除“斜体”复选框,则文本框中的文字字形就不是斜体。运行界面如图 6-7所示。
设计界面:
在窗体上建立一个文本框,两个复选框 。 3个控件的属性如表 6-3所示 。
编写如下事件过程:
Private Sub Check1_Click( )
If Check1.Value = 1 Then
Text1.FontUnderline = True
Else
Text1.FontUnderline = False
End If
End Sub
Private Sub Check2_Click()
If Check2.Value = 1 Then
Text1.FontItalic = True
Else
Text1.FontItalic = False
End If
End Sub
Private Sub Form_Load()
Text1.FontSize = 20
End Sub
6.4 容器与框架所谓容器,就是可以在其上放置其它控件对象的一种对象 。 窗体,图片框和框架都是容器 。 容器内所有控件成为一个组合,随容器一起移动,显示,消失和屏蔽 。
在前一节例 6.3中,是在一个窗体上建立一组单选按钮,若要在同一窗体上建立几组相互独立的单选按钮,通常用框架控件 ( Frame) 将每一组单选钮框起来,这样在一个框架内的单选钮成为一组,对一组单选钮的操作不会影响其它组的单选钮 。
在窗体上创建框架及其内部控件时,应先添加框架控件,然后单击工具箱上的控件,用,+”指针在框架中以拖拽的方式添加控件,框架内的控件不能被拖出框架外。不能用双击的方式向框架中添加控件,也不能先画出控件再添加框架。如果要用框架将窗体上现有的控件进行分组,可先选定控件,将它们剪切后粘贴到框架中。
1.属性
( 1) Caption属性框架的标题,位于框架的左上角,用于注明框架的用途。
( 2) Enabled属性决定框架中的对象是否可用,通常把 Enabled属性设置为 True,以使框架内的控件成为可以操作的。
2.事件
Click和 DblClick。在大多数情况下,我们用框架控件对控件进行分组,没有必要响应它的事件。
【 例 6.6】 使用两个单选钮组来改变文本框中文字的颜色和大小。运行结果如图 6-8所示。
设计界面:
在窗体上添加一个标签控件,一个命令按钮;添加一个框架控件,在框架控件上画上 3个单选钮控件
(颜色按钮组);再添加一个框架控件,在框架控件上画上两个单选钮控件(字体大小按钮组)。两个框架的 Caption 属性分别设置为“颜色”和“字体大小”,其它控件属性的设置可以按照图 6-8所示自己进行。
编写代码如下:
Private Sub Command1_Click( )
end
End Sub
Private Sub Option1_Click( )
'蓝色单选钮
Label1.ForeColor = &HFF0000
End Sub
Private Sub Option2_Click( )
'红色单选钮
Label1.ForeColor = &HFF&
End Sub
Private Sub Option3_Click()
'绿色单选钮
Label1.ForeColor = &HFF00&
End Sub
Private Sub Option4_Click()
' 文字大小 10单选钮
Label1.FontSize = 10
End Sub
Private Sub Option5_Click()
'文字大小 20单选钮
Label1.FontSize = 20
End Sub
6.5 列表框与组合框列表框 ( ListBox) 控件将一系列的选项组合成一个列表,用户可以选择其中的一个或几个选项,但不能向列表清单中输入项目;组合框 ( ComboBox) 控件是综合文本框和列表框特性而形成的一种控件,用户可通过在组合框中输入文本来选定项目,也可从列表中选定项目 。
6.5.1 列表框列表框控件( ListBox)的主要用途在于提供列表式的多个数据项供用户选择。在列表框中放入若干个项的名字,用户可以通过单击某一项或多项来选择自己所需要的项目。如果放入的项较多,超过了列表框设计时可显示的项目数,则系统会自动在列表框边上加一个垂直滚动条。
1.属性
( 1) List属性该属性是一个字符串数组,用来保存列表框中的各个数据项内容。 List数组的下标从 0开始,即 List( 0)
保存表中的第一个数据项的内容。 List( 1)保存第二个数据项的内容,依次类推,List( ListCount-1)保存表中的最后一个数据项的内容。
在窗体上添加一个列表框,其外观如图 6-9所示,
图上所显示的,List1”是控件的名称,而不是列表项中的数据项。
( 2) ListCount属性该属性记录了列表框中的数据项数,该属性只能在程序中引用它 。
( 3) Text属性用于存放被选中列表项的文本内容 。 该属性是只读的,不能在属性窗口中设置,也不能在程序中设置,
只用于获取当前选定的列表项的内容 。 可在程序中引用 Text属性值 。
( 4) ListIndex属性该属性是 List数组中,被选中的列表项的下标值
(即索引号)。如果用户选择了多个列表项,则
ListIndex是最近所选列表项的索引号;如果用户没有从列表框中选择任何一项,则 ListIndex为- 1。程序运行时,可以使用 ListIndex属性判断列表框中哪一项被选中。
例如,在列表框 List1中选中第 2项,即 List1.List数组的第 2项,则 ListIndex= 1( ListIndex从 0开始)。
ListIndex属性不能在设计时设置,只有程序运行时才起作用。
( 5) Selected属性该属性是一个逻辑数组,其元素对应列表框中相应的项。表示相应的项在程序运行期间是否被选中。
例如,Selected( 0)的值为 True,表示第一项被选中,
如为 False,表示未被选中。
( 6) MultiSelect(多选择列表项)属性该属性值表明是否能够在列表框控件中进行复选以及如何进行复选。它决定用户是否可以在控件中做多重选择,它必须在设计时设置,运行时只能读取该属性。 Multiselect属性值的说明如表 6-4所示。
( 7) SelCount属性其值表示在列表框控件中所选列表项的数目,只有在 MultiSelect 属 性 值 设 置 为 1 ( Simple ) 或 2
( Extended) 时起作用,通常与 Selected数组一起使用,
以处理控件中的所选项目 。
2.方法
ListBox对应的控件方法有,AddItem,Clear和
RemoveItem
( 1) AddItem方法该方法向一个列表框中加入列表项,其语法是:
Listname.AddItem item[,index]
( 2) RemoveItem方法该方法用于删除列表框中的列表项,其语法是:
Listname.RemoveItem index
( 3) Clear方法该方法删除列表框控件中的所有列表项 。 其语法是:
Listname.Clear
【 例 6.7】 利用列表框和命令按钮编程,要求程序能够实现添加项目,删除项目,删除全部项目的功能 。
设计界面:
在窗体上添加一个列表框 ( ListBox) 控件,3个命令按钮 。 属性设置如表 6-5所示 。
在程序中添加如下代码:
Private Sub Command1_Click( )
Dim entry
entry = InputBox( "输入添加内容 ","添加 ")
List1.AddItem entry ' 添加项目
End Sub
Private Sub Command2_Click()
Dim i As Integer
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected( i) Then List1.RemoveItem i
'删除选中项目
Next i
End Sub
Private Sub Command3_Click()
List1.Clear '全部删除
End Sub
运行结果如图 6-12所示。
6.5.2 组合框组合框 ( ComoBox) 是一种兼有列表框和文本框的功能的控件 。 它可以像列表框一样,让用户通过鼠标选择所需要的项目;也可以像文本框一样,用键入的方式选择项目 。
1.属性
( l) Style属性这是组合框的一个重要属性,其取值为 0,1,2,
它决定了组合框 3种不同的类型,分别为下拉式组合框,
简单组合框和下拉式列表框 。 如图 6-13所示 。
( 2) Text属性该属性值是用户所选择的项目的文本或直接从编辑区输入的文本 。
2.事件组合框所响应的事件依赖于其 Style属性 。
【 例 6.8】 设计一个简单的报名窗口,要求界面如图 6-14所示,从文本框中输入学生姓名,在,班级,
旁边的组合框中选择其所属班级 ( 提供 4种默认班级:
电气 991,微机 991,网络 991,电子 991,用户可以输入其它的班级名 ) 。 然后将学生姓名和班级添加到列表框中 。 用户可以删除列表框中所选择的项目,也可以把整个列表框清空 。
设计界面如下:
在窗体上加入 3个标签,一个文本框,一个组合框,
一个列表框,以及 3个命令按钮 。 各控件属性设置如表
6-6所示 。
程序如下:
Private Sub Command1_Click( )
If (( Text1.Text <> "") And( Combo1.Text <>
"")) Then
List1.AddItem Text1.Text + " " + Combo1.Text
Else
MsgBox( "请输入添加内容 ! ")
End If
End Sub
Private Sub Command2_Click()
Dim i As Integer
If List1.ListIndex >= 0 Then
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected( i) Then List1.RemoveItem i
'删除被选中的项目
Next i
End If
End Sub
Private Sub Command3_Click()
List1.Clear '清空列表
End Sub
Private Sub Form_Load()
Combo1.AddItem "电气 991"
Combo1.AddItem "微机 991"
Combo1.AddItem "网络 991"
Combo1.AddItem "电子 991"
Combo1.Text = Combo1.List( 0)
End Sub
程序运行界面如图 6-15所示。
6.6 滚动条滚动条通常用来附在窗体边上帮助观察数据或确定位置,作为速度,数量的指示器来使用,也可用来作为数据输入的工具 。
滚动条分为水平滚动条 ( HscrollBar) 和垂直滚动条 ( VscrollBar),如图 6-16 所示 。 除方向不一样外,
水平滚动条和垂直滚动条的结构与操作是完全相同的 。
滚动条的两端各有一个滚动箭头,在滚动箭头之间有一个滚动块 。 滚动块从一端移至另一端时,其值在不断变化 。 垂直滚动条的值由上往下递增,水平滚动条的值由左往右递增 。 其值均以整数表示,取值范围为- 32768~ 32767。 最小值和最大值分别在两个端点,其坐标系和滚动条的长度 ( 高度 ) 无关 。
1.属性
( 1) Max属性滚动条所能表示的最大值。
( 2) Min属性滚动条所能表示的最小值。
( 3) Value属性表示当前滚动条所代表的值,范围在 Max与 Min之间 。
( 4) LargeChang属性当用户单击滚动块和滚动箭头之间的区域时,滚动条控件 ( HScrollBar 或 VScrollBar) 的 Value 属性值的改变量,默认值为 1。
( 5) SmallChange属性表示当用户单击滚动条两端的箭头时,Value属性值的增加或减小的量,默认值为 1。
2.事件滚动条的最常用的是 Change事件和 Scroll事件 。
【 例 6.9】 利用滚动条改变文本框中所显示文本的字号大小 。 要求程序运行效果如图 6-17所示 。
程序代码如下:
Private Sub HScroll1_Change( )
Label1.Caption = HScroll1.Value
Text1.FontSize = HScroll1.Value
End Sub
6.7 焦点与 Tab顺序焦点与 Tab顺序是和控件接受用户输入有关的两个概念 。
6.7.1 焦点焦点是对象鼠标或键盘输入的能力 。 当对象具有焦点时,就可以接受用户的输入 。
当对象得到焦点时发生 GetFocus事件,当对象失去焦点时发生 LostFocus事件 。
可用以下方法将焦点赋给对象:
( 1)用鼠标选择对象,用 [Tab]键移动,或用快捷键;
( 2)程序代码中用 SetFocus方法可以设置焦点。
例如,可以在 Form1窗体的 Load事件中添加如下代码,使得程序开始时光标(焦点)位于文本框 Text3
中。
Private Sub Form_Load()
Form1.show ' 显示 Form1窗体
Text3.Setfocus ' 使焦点位于文本框 Text3中
End Sub
使用以下方法可以使对象失去焦点:
( 1)用鼠标单击选择另一个对象,用 [Tab]键移动,或用快捷键:
( 2)代码中对另一个对象使用 SetFocus方法改变焦点。
说明:当对象的 Enabled和 Visible属性都为 True时,
它才能接受焦点。
6.7.2 Tab顺序所谓 Tab顺序,就是用户按 [Tab]键时,焦点在各个控件之间移动的顺序。在一般情况下,Tab顺序由控件建立时的先后顺序确定。
可以通过设置控件的 TabIndex属性来改变它的
Tab顺序。 TabIndex属性值决定了它在 Tab顺序中的位置。
6.8 多窗体前面我们已设计了不少 VB应用程序,这些程序有的较简单,有的较复杂 。 但它们都有一个共同的特点,
即只有一个窗体 。 在实际应用中,特别是对于较复杂的应用程序,单一窗体往往不能满足需要 。 VB允许对多个窗体进行处理,多重窗体 ( Multi Form) 程序中的每个窗体都可以有自己的界面和代码,完成各自的功能 。
6.8.1 与多窗体有关的操作
1.添加窗体添加窗体是指在当前工程中添加一个新的窗体或者把一个属于其它工程的窗体添加到当前工程中 。 添加一个新窗体的方法有,菜单法,,,工具栏法,等 。
2.当前窗体的切换
3.删除窗体
4.多窗体程序的保存
5.启动窗体的设置拥有多个窗体的应用程序,默认情况下,在设计阶段建立的第一个窗体为启动窗体 。 即应用程序开始运行时,先运行这个窗体 。 如果要改变系统默认的启动窗体,需要另外设置 。
6.8.2 与多窗体有关的语句和方法在多窗体程序设计中,经常需要打开,关闭,隐藏或显示指定的窗体 。 这可以通过相应的语句和方法来实现 。
1,Load语句格式,Load窗体名称
Load语句把一个窗体装入内存 。
2,Show方法格式,[ 窗体名称,] Show[ 模式 ]
Show方法用来显示一个窗体 。
3,Unload语句格式,Unload 窗体名称该语句与 Load语句的功能相反,它清除内存中指定的窗体 。
4,Hide方法格式,[窗体名称,]Hide
Hide方法使窗体隐藏起来,不在屏幕上显示,但此时窗体仍在内存中 。 因此,它与 Unload语句的作用是不一样的 。