650 likes | 773 Views
第 7 章 常用控件. 7.1 显示图片和图形的控件. 7.2 框架. 7.3 为用户提供选择的控件. 7.4 滚动条与滑块. 7.5 计时器. 7.6 ProgressBar 控件. 7.7 UpDown 控件. 7.8 Animation 控件. 7.9 SSTab 控件. 7.10 鼠标器和键盘. 7.1 显示图片和图形的控件.
E N D
第7章 常用控件 7.1 显示图片和图形的控件 7.2 框架 7.3 为用户提供选择的控件 7.4 滚动条与滑块 7.5 计时器 7.6 ProgressBar控件 7.7 UpDown控件 7.8 Animation控件 7.9 SSTab控件 7.10 鼠标器和键盘
7.1 显示图片和图形的控件 • 图片框控件( PictureBox )与图像框控件(Image 控件)在VB中用来在窗体的指定位置显示图形信息。图片框控件具有更大的灵活性,可以用来显示动态的图形信息。而图像框控件只是用来显示静态的图形信息,包括来自位图、图标或元文件的图形,也可以显示增强的元文件、JPEG 或 GIF文件。 • 图片框控件可以作为父控件,即可以容纳其他控件。可以使用Print方法,而图像框控件则不具有这些性能。但图像框控件使用较少的系统资源,所以重画起来比图片框控件要快。
7.1.1 重要属性、事件和方法 • 1. Picture 属性 Picture 属性的作用为返回或设置控件中要显示的图片。其语法为: [<对象名>.]Picture [= <图片文件路径及文件名>] • 2. LoadPicture函数 LoadPicture函数用于在设计时将图形载入到窗体的 Picture 属性、PictureBox 控件或 Image 控件。其语法为: LoadPicture([<图形文件名>],[<尺寸>],[<颜色深度>],[x,y]) • 3. Stretch属性 Stretch属性值用来返回或设置一个值,该值用来指定一个图形是否要调整大小,以适应图像框控件的大小。其语法为: [<对象名>.]Stretch [=< 逻辑值>]
7.1.2 图形文件的装入 • 1.设计时装入图形文件 • (1)利用属性窗口的Pictrue属性装入图形文件 • 操作步骤为: • ① 单击图片框使其成为活动控件。 • ② 在属性窗口中找到Pictrue属性条,单击其右边的三个小点(…),打开“加载图片”对话框; • ③ 找到所需图形文件后,单击“打开”按钮,完成图形文件的装入。 • (2)利用剪贴板装入图形文件 • 具体方法是: • ① 在Windows下用绘图软件绘制所需图形,将图形复制到剪贴板中,或者使用图形浏览软件,图象捕捉软件将图形复制到剪贴板中。 • ② 使图片框(或图像框和窗体)处于活动状态,单击“编辑”菜单中的“粘贴”命令,则可将剪贴板中的图形粘贴到图片框中。
2. 在运行时装入图形文件 例7-1:编程实现三个图片框中图片的轮换,并使得一个图片框中可以显示整个图片。 (1)界面设计 在窗体上添加如图7-2所示三个图片框控件Picture1、Picture2、Picture3。将Picture3的AutoSize属性设置为True。其他属性值为默认值。 (a)设计时界面 (b)运行时界面 (c)响应事件 图7-2 图片框
(2)编写事件代码 在Form_Load()事件中加入如下代码: Private Sub Form_Load() Picture1.Picture = LoadPicture("c:\steamship.gif") Picture2.Picture = LoadPicture("c:\bus.gif") Picture3.Picture = LoadPicture("c:\car.gif") End Sub 在Picture3_Click()事件中加入如下代码: Private Sub Picture3_Click() Form1.Picture = Picture3.Picture : Picture3.Picture = Picture2.Picture Picture2.Picture = Picture1.Picture : Picture1.Picture = Form1.Picture Form1.Picture = LoadPicture() End Sub
7.2 框架 框架(Frame)控件可以用来对其他控件进行分组,以便于用户识别。 • 为了将控件分组,首先需要绘制框架,然后绘制框架里面的控件。 • 如果需要对窗体上已有的控件进行分组,可以选中需要放入框架中的控件,然后采用“编辑”菜单的“剪切”命令将控件剪切到剪贴板中,再选中框架,单击“编辑”菜单的“粘贴”命令将选中的控件放入框架中。如果要将框架内的控件移动到框架之外,也只能采用“剪切”和“粘贴”的方法。 • 框架的主要属性有Name、Caption 、Enable、Visible等。 • Caption为框架的可见文字部分,如果省略,则框架形式上如同一个封闭的矩形框。 • 当框架的Enable属性为False时,框架内的所有控件都将屏蔽,用户无法对其操作,此时框架的标题(Caption)为灰色。 • 当框架的Visible属性为False时,框架及其内部的所有控件都将隐藏起来。
7.3 为用户提供选择的控件 表7-1 为用户提供选择的控件
7.3.1 单选按钮和复选框 1.单选按钮和复选框的重要属性 2.单选按钮和复选框的主要事件
1.单选按钮和复选框的重要属性 (1) Alignment属性 0:(缺省值)文本是左对齐的,控件是右对齐的。 1:文本右对齐,控件左对齐。 (2)Value属性 单选按钮: Value=True,表示单选按钮被选中;Value=False,默认设置,表示单选按钮不被选中。 复选框: Value=0,默认设置,表示复选框不被选中;Value=1,复选框被选中;Value=2,复选框为灰色,表示禁止用户选择。 (3)Style属性 Style=0,标准方式;Style=1,图形方式(参见图7-5)。
图7-4 复选框(左)和单选按钮(右) (a)复选框和单选按钮(未选中状态) (b)复选框和单选按钮(选中状态) 图7-5 图形方式的单选按钮和复选框
2.单选按钮和复选框的主要事件 单选按钮和复选框可以接受的事件主要有click事件。但往往并不需要编写其事件过程。因为单击时,它们自动改变状态。 例7-2:用复选框和单选按钮控制文本框中输入的字体。 (1)界面设计 本程序采用如图7-6所示界面。包括两个标准形式的单选按钮,两个图形方式的复选框,一个文本框(设计时已经输入文字,字体三号),一个Picture图片框,用于显示文本框中文本的字体),一个Command命令按钮用于切换字体。各控件的属性见表7-2。 表7-2 控件属性 图7-6 复选框和单选按钮的应用
Private Sub Check1_Click() Text1.FontBold = IIf(Check1=1,True,False) ' “粗体”复选框是否按下(选中) End Sub Private Sub Check2_Click() Text1.FontItalic = IIf(Check2=1,True,False) ' “斜体”复选框是否按下(选中) End Sub Private Sub Option1_Click() Text1.FontUnderline = IIf(Option1,True,False) ' “下划线”单选按钮是否选中 End Sub Private Sub Option2_Click() Text1.FontStrikethru = IIf(Option2,True,False) ' “删除线”单选按钮是否选中 End Sub Private Sub Command1_Click() Static I ' 声明变量 Dim OldFont Picture1.Cls OldFont = FontName ' 保留原来的字体。 Text1.FontName = Screen.Fonts(I) ' 改变到新的字体。 I = I + 1 ' 计数器增一。 If I = FontCount Then I = 0 ' 重新开始。 FontName = OldFont ' 恢复原来的字体。 Text1.FontBold = IIf(Check1=1,True,False) ' “粗体”复选框是否按下(选中) Text1.FontItalic = IIf(Check2=1,True,False) ' “斜体”复选框是否按下(选中) Text1.FontStrikethru = IIf(Option1,True,False) ' “下划线”单选按钮是否选中 Text1.FontStrikethru = IIf(Option2,True,False) ' “删除线”单选按钮是否选中 Picture1.Print Text1.FontName End Sub
7.3.2 列表框和组合框 列表框(ListBox) 控件显示项目列表,用户从其中可以选择一项或多项。列表框的默认名为ListX,组合框的默认名为ComboX(X=1,2,…。)。列标框和组合框的图标参见图7-7。 组合框(ComboBox) 控件将文本框(TextBox) 控件和列表框控件的特性结合在一起-既可以在控件的文本框部分输入信息,也可以在控件的列表框部分选择一项。组合框有三种风格:下拉式组合框、简单组合框和下拉式列表框。 7-7 列表框组合框图标 用户可以通过单击列表框或组合框中的某一项来选择所需选项,也可以在组合框中输入自己的选项(即使输入的内容并不包含在列表中),但是只能在列表框中进行选择,这是列表框和组合框的最大区别。
1. 列表框和组合框的重要属性 (1)List属性 List属性用来存放列表框和组合框列表部分的选项。列表是一个字符串数组,数组的每一项都是一列表选项,对列表框和组合框控件在设计时可以通过属性窗口进行设置,也可以在运行时进行读写。其语法为: [<对象名>.].List (<索引值>) [=<字符串表达式>] (2)ListIndex属性 ListIndex属性用来存放控件中当前选择项目的索引,在设计时不可用。如果未选定项目,则 ListIndex 属性值是 –1。对于 ComboBox 控件,表示用户向文本框部分输入了新文本。
(3)Sorted属性 Sorted属性决定控件的元素是否自动按字母表顺序升序排序。Sorted属性值为True,则选项按字母顺序升序排列,否则按输入的顺序排列。 (4)Text属性 对下拉组合框和简单组合框控件,表示编辑域中的文本,该文本可以从列表中选择或从键盘输入。 对下拉列表框和列表框控件,表示在列表中选择的选项,返回值总与表达式List(ListIndex)的返回值相同。Text属性只能在程序中设置,为只读属性。
2. 列表框特有的重要属性 (1)MultiSelect属性 MultiSelect属性用来设置在列表框控件中进行复选以及如何进行复选。在运行时是只读的。 MultiSelect 属性值在0、1、2之间选择。 MultiSelect 属性值=0:(缺省值)不允许复选。 MultiSelect 属性值=1:简单复选。鼠标单击或按下空格键,在列表中选中或取消选中项。使用箭头键移动焦点。 MultiSelect 属性值=2:扩展复选。按下 SHIFT 并单击鼠标或按下 SHIFT 以及一个箭头键(上箭头、下箭头、左箭头、右箭头)将在以前选中项的基础上扩展选择到当前选中项。按下 CTRL 并单击鼠标在列表中选中或取消选中项。
(2)Selected属性 Selected属性值为一个逻辑数组,其中的每个元素对应列表中的一项,表示列表框控件中的一个项的选择状态。当数组元素值为True时,对应项被选中,否则没有选中。在设计时不可用。Selected属性的语法为: 列表框名.Selected(<索引值>) [= <逻辑值>] (3)SelCount 属性 SelCount 属性返回在列表框控件中被选中项的数量。 如果没有选项被选中,那么 SelCount 属性将返回 0 值。 (4)Style属性 Style属性控制列表框的外观。 Style属性值=0:默认值,不带复选框,单击选项即可选中。 Style属性值=1:带复选框,必须在选项左边的复选框(小方框)中出现小对钩时才可选中。
3. 组合框特有的重要属性 • 对于组合框控件, Style 属性值可以为0,1和2。 • Style 属性值=0:缺省值,此时组合框称为下拉式组合框。包括一个下拉式列表和一个文本框。只有在单击文本框右边的下拉按钮时才可见下拉式列表框。可以从列表选择或在文本框中输入。 • Style 属性值=1:此时组合框称为简单组合框。包括一个文本框(文本框的右边无下拉按钮)和一个不能下拉的列表框。可以从列表中选择或在文本框中输入用户的选择(可以是列表中没有的内容)。 • Style 属性值=2:此时组合框称为下拉式列表框。这种样式仅允许从下拉式列表中选择。
4.列表框和组合框的常用方法 (1)AddItem方法 AddItem方法用于将项目添加到列表框或组合框控件,其语法为: <列表框 | 组合框>.AddItem <项目字符串>[,<索引值>] (2)Clear方法 Clear方法用于清除列表框或组合框或系统剪贴板的内容。其语法为: <对象名>.Clear (3)RemoveItem方法 RemoveItem 方法用以从列表框或组合框中删除一项。其语法为: <对象名>.RemoveItem <索引值>
5. 列表框和组合框的常用事件 • 列表框和组合框的常用事件有Click事件、DblClick事件、Dropdown事件等。其中只有简单组合框(Style=1)才能响应Dbllick事件。另外,下拉式组合框和简单组合框具有Change事件(在输入文本时响应事件)。在大多数情况下,都是在用户选择项目后,读取列表框或组合框的Text属性。
例7-3:建立两个列表框,分别为可购商品列表框和顾客购物列表框。要求程序能够完成商品选购、撤消选购、添加新商品、删除现有商品、统计全部选购的商品价格等操作。例7-3:建立两个列表框,分别为可购商品列表框和顾客购物列表框。要求程序能够完成商品选购、撤消选购、添加新商品、删除现有商品、统计全部选购的商品价格等操作。 (1)界面设计 如图7-9所示,在窗体上添加的2个框架、两个列表框、5个命令按钮。除列表框外其余控件的Caption属性见表7-3。 图7-9 运行界面 表7-3 控件属性
Private Sub Command1_Click() If List1.ListIndex <> -1 Then List1_DblClick ' 选中某个选项后,调用List1_DblClick事件 End Sub Private Sub Command2_Click() If List2.ListIndex <> -1 Then List2.RemoveItem List2.ListIndex ' 选中List2中某个选项后,将其删除 End Sub Private Sub Command3_Click() newlist = InputBox("输入新商品") ' 从对话框中输入新商品名 List1.AddItem newlist ' 添加到List1中 End Sub Private Sub Command4_Click() If List1.ListIndex <> -1 Then List1.RemoveItem List1.ListIndex ' 选中List1中某个选项后,将其删除 End Sub Private Sub List1_DblClick() ' 双击List1时给List2列表框添加项目 Dim k%, yandn% k = 0 For i = 0 To List2.ListCount – 1 If List2.List(i) = List1.Text Then k = 1 ' 判断List2列表框中是否已有选定项目 Next If k <> 1 Then List2.AddItem List1.Text ' List2列表框中无选定项目则添加 Else yandn = MsgBox("是:重复,否:不重复", vbInformation + vbYesNo, "重复输入") If yandn = 6 Then List2.AddItem List1.Text ' 同意重复选择时也可以添加 End If End Sub
例7-4:将框架的应用实例进行改善,用列表框或组合框列出各电脑配件的选项供用户选择。用户每选择一项,将在“用户配置”组合框中添加对应的选择项,单击“求总价”按钮将在Picture1图片框中显示总价格。例7-4:将框架的应用实例进行改善,用列表框或组合框列出各电脑配件的选项供用户选择。用户每选择一项,将在“用户配置”组合框中添加对应的选择项,单击“求总价”按钮将在Picture1图片框中显示总价格。 (1)界面设计 设计如图7-10所示界面,有9个框架,“CPU”框架和“显示器”框架为列表框,其余为组合框。每个框架中有一个列表框或组合框,框架的Capion属性值、列表框或组合框的名称相同,分别为各类配件的名称。列表框和组合框的种类见图示。(设计时组合框的Text属性为相应组合框的名称)。 图7-10 列表框和组合框的应用
(2)编写事件过程代码 Dim cpupri, dypri, hdpri, mbpri, grapri, mempri, cdpri, othpri, realpri As Single Dim mycpu!, mydy!, myhd!, mygra!, mymb!, mymem!, mycd!, myoth! Private Sub Form_Load() cpupri = Array(1000, 1100, 1200, 1300, 1400) ' cpupri 为存放CPU价格的数组 ' 同样用Array函数为其他存放各配件价格的数组dypri、hdpri、mbpri 、grapri 、mempri、cdpri 赋值 End Sub Private Sub Command1_Click() 用户配置.AddItem cpu.Text, 0:用户配置.AddItem 光驱.Text 用户配置.AddItem 内存.Text:用户配置.AddItem 其他.Text 用户配置.AddItem 显卡.Text:用户配置.AddItem 显示器.Text 用户配置.AddItem 硬盘.Text:用户配置.AddItem 主板.Text realpri = mycpu + mydy + myhd + mygra + mymb + mymem + mycd + myoth ' 求总价格 Picture1.Print "总价="; realpri End Sub Private Sub cpu_Click() mycpu = cpupri(cpu.ListIndex) ' mycpu存放所选择的CPU价格 End Sub
7.4 滚动条与滑块 • 滚动条(ScrollBar)和滑块(Slider)控件通常用来帮助观察数据或确定位置,同时也可以作为数据输入的工具。FlatScrollBar控件是标准 Windows滚动条(ScrollBar控件)对鼠标敏感版本,它提供平面格式选项,也可以代替标准 Windows 的立体滚动条。使用滚动箭头和滚动框时,FlatScrollBar 能提供更强的交互性能。FlatScrollBar 控件是 MSCOMCT2.OCX 文件中一组ActiveX 控件的一部分。要在应用程序中使用 FlatScrollBar 控件,必须将MSCOMCT2.OCX 文件添加到工程。
FlatScrollBar 控件的三种格式选项: (1)和Internet Explorer 4.0 中的滚动条看起来一样的平面外观。滚动箭头和滚动条滑块都是对鼠标敏感的;当鼠标指针移动到它们上面并按下时,它们就会改变颜色。(参见图7-11左2) (2)鼠标指针放在上面就变成立体的平面外观。当鼠标指针移动到滚动箭头和滚动条滑块上时,它们就会变成斜面。(参见图7-11左3) (3)和标准 Windows 的立体滚动条外观相同。立体模式没有鼠标敏感功能。参见图7-11左1) 使用 FlatScrollBar 可以禁用两个滚动箭头之一,这就给用户提供了基于程序中其它因素的附加反馈信息,以作为在特定方向上的滚动指示。 图7-11左边三个为FlatScrollBar控件,第4个为标准滚动条控件。 图7-11 滚动条与滑快
7.4.1 滚动条和滑块共有的重要属性 • 1. Value属性 Value属性表示滚动框在滚动条中的位置,用整数表示,其取值范围为-32768~32767。 • 2. Max属性 Max属性表示滚动条所能够代表的最大值,其取值范围为-32768~32767。。 • 3. Min属性 Min属性表示滚动条或滑块所能够代表的最小值,其取值范围为-32768~32767。 • 4. SmallChange 属性 SmallChange属性表示当用户单击滚动条两端箭头时,滚动框移动的增量值。对滑块控件,可以用左、右箭头进行控制。。 • 5. LargeChange属性 LargeChange属性表示当用户单击滚动条或滑块中的空白处时,滚动框或滑快移动的增量值。对滑块控件,还可以用PageUp和PageDown键控制。
7.4.2 FlatScrollBar 控件特有的重要属性 • Appearance 属性: • Appearance 属性用来设置滚动条的外观,并决定滚动条是平面的、立体的,还是两者的组合。 • Appearance=fsb3D(即0):滚动条有标准 Windows 滚动条的立体外观。 • Appearance=fsbFlat(即1):缺省值, 滚动条是平面的。 • Appearance=fsbTrack3D(即2):滚动条是平面的,当鼠标移动到滑块和箭头按钮上,它们就会变成立体的。
7.4.3 滑块控件特有的重要属性 • 1. TickStyle 属性 TickStyle 属性用来确定 Slider 控件上显示的刻度标记的样式和位置。可以为0~3四个值。 • 2. TickFrequency 属性 TickFrequency 属性用来确定滑块控件刻度标记的频率,此频率与其范围有关。 • 3. TextPosition属性 当用鼠标操作滑块控件时会出现当前刻度的提示文本,TextPosition属性用来确定显示提示文本相对于滑块的位置。 TextPosition属性=0:文本显示在控件的上边或左边。 TextPosition属性=1:文本显示在控件的下边或右边。 • 4. SelLength 属性和SelStart属性 SelLength 属性表示滑块中选择出的范围长度。 SelStart属性表示滑块中选择出的范围起点。 SelLength 和 SelStart 属性一起使用,可以在滑块上选择某一范围内的连续数值。因此,可以在滑块上直观地模拟可能的取值范围。 SelLength 属性不能小于 0,SelLength 与 SelStart 之和不能大于 Max 属性值。 • 5. SelectRange 属性 SelectRange 属性决定滑块是否能够具有选择出的范围。
7.4.4 滚动条和滑块的事件 • 与滚动条有关的事件主要是Scroll和Change事件。只有拖动滚动框才响应Scroll,而通过单击滚动箭头或滚动条则不会发生Scroll事件。只要滚动框的位置发生改变,就触发Change事件。
例7-5:利用滚动条调整图片的大小,利用滑块调整字号。例7-5:利用滚动条调整图片的大小,利用滑块调整字号。 (1)界面设计 图7-12 运行界面 图7-13 滚动条属性页 图7-14 滑块属性页
(2)编写事件过程代码 Private Sub FlatScrollBar1_Change() Picture1.Height = FlatScrollBar1.Value*3 ' 图片的高度=滚动条的值×3 Picture1.Width = FlatScrollBar1.Value*4 ' 图片的高度=滚动条的值×4 FlatScrollBar1.Width = Picture1.Width ' 滚动条的跨度=图片框的宽度 FlatScrollBar1.ToolTipText = "图片尺寸" & Picture1.Width & "*" & Picture1.Height ' 显示提示文本 Slider1.Top = Picture1.Top + Picture1.Height - Slider1.Height ' 滑块保持在图片框内的底部 Slider1.Width = Picture1.Width End Sub Private Sub Slider1_Click() Label1.FontSize = Slider1.Value ' 文字大小随滑块值调整 Slider1.ToolTipText = "字号" & Slider1.Value ' 显示提示文字 End Sub
7.5 计时器 • 计时器(Timer)控件是在应用程序中用来处理按一定时间间隔(Interval)触发事件的控件。在运行时不可见。 • 计时器的属性不多,其重要的属性为Interval属性。 • 计时器只有一个事件,即Timer事件。 • 在VB中,可以用Timer函数获取系统时钟的时间。而Timer事件是VB模拟实时计时器的事件,不能将两者混淆。 • Timer事件的一般语法格式为: • Private Sub <计时器名称>_Timer() • 只要 Timer 控件的 Enabled 属性被设置为 True 而且 Interval 属性值大于 0,则 Timer 事件以 Interval 属性值指定的时间间隔发生。
例7-6:利用计时器实现气球升空。 在窗体上添加两个图片框控件Picture1~Picture2,两个计时器Timer1、Timer2,令Interval1=10,Interval1=20,在Windows附件的“画图”程序中绘制几个气球,分别复制到两个图片框中。程序代码为: Private Sub Timer1_Timer() Picture1.Top = Picture1.Top – 10 ' 气球上升 If Picture1.Top < 0 Then Picture1.Top = Form1.Height - Picture1.Height ' 气球1回到窗体下部 End If End Sub Private Sub Timer2_Timer() Picture2.Top = Picture2.Top – 10 ' 气球上升 If Picture2.Top < 0 Then Picture2.Top = Form1.Height - Picture2.Height ' 气球2回到窗体下部 End If End Sub
例7-7:利用随机函数在文本框Text1中输入小学生加减运算题,答案由用户在文本框Text2中输入,每题解答时间为10秒钟,总共答题时间为60分钟。每题的限制时间采用倒计时,答题时间到,统计并显示总成绩。例7-7:利用随机函数在文本框Text1中输入小学生加减运算题,答案由用户在文本框Text2中输入,每题解答时间为10秒钟,总共答题时间为60分钟。每题的限制时间采用倒计时,答题时间到,统计并显示总成绩。 (1)界面设计 设计如图7-15所示界面。除文本框外,其余各控件的属性见表7-5。 图7-15 运行界面 表7-5 控件属性
Dim n As Integer , k! ' k为存放当前剩余时间的变量 Private Sub Command1_Click() ' “开始/下一题”按钮事件过程 Dim a!, b! ' 存放操作数 Static c! ' 存放正确答案 Command1.Caption = "下一题" ' 将“开始”变换为“下一题” If Val(Text2.Text) = c Then n = n + 10 ' 答案正确,加10分 Randomize a = CInt(100 * Rnd() + 1) : b = CInt(100 * Rnd() + 1) ' 随机产生操作数 If a > b Then Text1.Text = Str(a) & "-" & Str(b): c = a – b ' 减法运算 Else Text1.Text = Str(a) & "+" & Str(b) : c = a + b ' 加法运算 End If Text2.Enabled = True Text2.Text = "" : Text2.SetFocus ' 清空Text2并将焦点定位在Text2上,以便输入答案 k = 0 Label2.Visible = True End Sub Private Sub Command2_Click() ' “结束”按钮事件过程 If Text1<> "" And Text2.Text <> "" ThenCommand1_Click ' 防止漏判 Command1.Visible = False : Command2.Visible = False : Command3.Visible = False Timer1.Enabled = False ' 停止计时 Label3.Visible = False Label2.Caption = "你的得分是" & n - 10 & "分" ' 显示成绩 End Sub
Private Sub Command3_Click() ' “暂停/继续”事件过程 If Command3.Caption = "暂停" Then Timer1.Enabled = False ' 暂停 Command3.Caption = "继续" Else Timer1.Enabled = True ' 继续 Command3.Caption = "暂停" End If End Sub Private Sub Timer1_Timer() Static m! ' 存放总用时 m = m + 1 : k = k + 1 Label3.Caption = "总共用时" & Str(m) Label2.Caption = "当前剩余时间" & Str(10 - k) '显示倒计时 If k = 10 Then Label2.Caption = "时间到" : Label2.Visible = False Text2.Enabled = False ' 当前时间到,禁止解答 k = 0 ' 重新计时 End If If m = 100 Then Command2_Click ' 总用时完,调用“结束”事件 End Sub
7.6 ProgressBar控件 • ProgressBar 控件通过从左到右用一些方块填充矩形来表示一个较长操作的进度。因而可以监视操作完成的进度。 ProgressBar控件位于Microsoft Windows Common Control6.0部件中。 • ProgressBar 控件有一个行程和一个当前位置。行程代表该操作的整个持续时间。当前位置则代表应用程序在完成该操作过程时的进度。 • ProgressBar 控件的重要属性有Max 属性、 Min 属性和Value属性。 Max 和 Min 属性设置了行程的界限。Value 属性则指明了在行程范围内的当前位置。由于使用方块来填充控件,因此所填充的数量只能是接近于 Value 属性的当前设置值。一般来讲,可以将Max设置为100,Min设置为1。此时Value=50表示完成了50%的操作。 • 可以用 ProgressBar 控件的 Align 属性把它自动定位在窗体的顶部或底部。
例7-8:数组Wage(1 to 3000)中存放某单位职工的工资,下面的程序为Wage数组进行初始化。程序中用一个名为 ProgressBar1 的 ProgressBar 控件,来显示初始化的进度。 Private Sub Form_Click() Print "数组初始化" Dim Counter As Single , wage(3000) As Integer ProgressBar1.Min = LBound(wage) : ProgressBar1.Max = UBound(wage) ProgressBar1.Visible = True : ProgressBar1.Value = ProgressBar1.Min For Counter = LBound(wage) To UBound(wage) wage(Counter) = Counter ' 设置数组中每项的初始值。 ProgressBar1.Value = Counter Next Counter ProgressBar1.Visible = False : ProgressBar1.Value = ProgressBar1.Min Form1.Caption = "初始化完毕" End Sub Private Sub Form_Load() ProgressBar1.Align = vbAlignBottom ' 将ProgressBar1 控件定位在窗体底部 ProgressBar1.Visible = False End Sub 图7-16 ProgressBar 控件应用实例
7.7 UpDown 控件 • UpDown 控件有一对上下箭头按钮,位于Microsoft Windows Common Control-2 6.0部件中,往往与其他控件捆绑在一起使用。单击时使诸如滚动位置或者关联的伙伴控件中的值增减。 建立Updown控件的伙伴控件的两种方法: (1)通过设置 AutoBuddy 属性,UpDown 控件将自动地将Tab 键次序中前面的控件作为它的伙伴控件。如果Tab 键次序中没有前面的控件,UpDown 控件则将Tab 键次序中的下一个控件作为它的伙伴控件。 (2)另一种设置伙伴控件的方法是使用 BuddyControl 属性。在设计时,一旦 AutoBuddy 属性或 BuddyControl 属性被设置,伙伴控件会自动地按其大小和位置与 UpDown 控件配对。UpDown 控件可用 Alignment 属性决定它被放在伙伴控件的右面或左面。
例7-9:将Text1文本框控件作为Updown1控件的伙伴控件,要求单击向上箭头时,Text1中的文本字号增加,反之则减小。例7-9:将Text1文本框控件作为Updown1控件的伙伴控件,要求单击向上箭头时,Text1中的文本字号增加,反之则减小。 (1)界面设计 在窗体上添加一个几乎充满整个窗体的文本框Text1,在Text1的右边添加一个Updown控件Updown1。 右键单击Updown1,打开如图7-17所示Updown控件的属性页对话框。单击“合作者”选项卡,在“合作者控件”(即伙伴控件)栏内输入Text1(或者选中“自动合作者”,则自动在栏内输入Text1),在“合作者属性”栏内选择“Text”(即运行时Text1中显示Updown控件的Value属性值)。 (a)伙伴控件及其关联属性 (b)Value、Min、Max、、Wrap、Increment属性值 图7-17 Updown控件的属性页
图7-18 Updown控件应用程序运行界面 (2)编写事件过程代码 “合作者属性”只是与Updown控件关联的属性,这里与Updown控件关联的属性为Text1.text。要达到程序要求,还应编写Updown1_Change事件代码如下: Private Sub UpDown1_Change() Text1.FontSize = UpDown1.Value End Sub
7.8 Animation控件 • Animation 控件用来显示无声的视频动画,只能播放无声的视频文件(AVI 文件)。Animation 控件位于Microsoft Windows Common Control-2 6.0部件中。 • AVI 动画类似于电影,由若干帧位图组成。虽然 AVI 动画可以有声音,但这样的动画不能在 Animation 控件中使用,如果试图装载这样的文件将会产生错误(错误号32767)。要播放有声的 .avi 文件,可以使用 Multimedia (MCI) 控件。 • 在运行时,Animation 控件不具有自己的图文框。 • Animation 控件的四个重要的方法:Open、Play、Stop 和 Close 方法。在使用该控件时,可用 Open 方法打开 .avi 文件,用 Play 方法进行播放,用 Stop 方法停止播放。在动画播放完毕以后,可用 Close 方法关闭该文件。在打开新文件之前不必关闭旧文件。 • Play 方法有三个参数,即 repeat、start 和 stop,它们决定文件被播放多少遍,从哪一帧开始播放,到哪一帧停止。 • 如果没有提供 repeat 参数,文件将被连续播放。
例7-10:利用Animation 控件和CommonDialog 控件播放AVI文件。 (1)界面设计 图7-19 DlgOpen控件的属性页 图7-20 运行界面 (2)编写事件过程代码 Private Sub cmdPlay_Click() dlgOpen.ShowOpen anmAvi.Open dlgOpen.FileName anmAVI.Play End Sub “停止”事件过程代码: Private Sub cmdStop_Click() anmAVI.Stop End Sub
7.9 SSTab控件 • SSTab 控件提供了一组选项卡,每个选项卡都可作为其它控件的容器。在控件中,同一时刻只有一个选项卡是活动的,这个选项卡向用户显示它本身所包含的控件而隐藏其它选项卡中的控件。SSTab控件位于Mirosoft Tabbed Dialog Control 6.0中。 • SSTab控件的属性可以在其属性页中进行设置,其重要属性及其作用为: • Tabs:决定选项卡的数目。 • TabsPerRow:每一行选项卡数。 • Style:决定选项卡的样式。 • 为了使用SSTab控件,必须首先决定怎样组织放置到不同选项卡中的控件。设置 Tabs 和 TabsPerRow 属性来创建选项卡,并把它们组织到各行中(通常只有一行)。然后在设计时通过单击每个选项卡来选择它。对每个选项卡,在用户选定该选项卡时希望显示控件,所以要将这些控件绘制出来。按照要求,设置 Caption、Picture、TabHeight 和 TabMaxWidth 属性,由此定制选项卡的顶部。
例7-11:使用SSTab控件,每个选项卡上绘制一个列表框显示各类配件的可供商品名称。实现例7-4的功能。例7-11:使用SSTab控件,每个选项卡上绘制一个列表框显示各类配件的可供商品名称。实现例7-4的功能。 (1)界面设计 在窗体上绘制一个SSTab控件,右键单击该控件,打开如图7-21所示属性页。设置选项卡数为7,每行选项卡数为7(即全部在一行上),为每一个选项卡设置标题。 在每一个选项卡上添加一个列表框,设置列表框的List属性(即输入各类配件所有选项)。 绘制一个Picture控件显示配件及总价格。 (2)编写事件过程代码(略) 事件过程代码与实例7-5类似。程序运行情况参见图7-22和图7-23(删除了Picture控件)。 图7-22 “CUP”选项卡 图7-23 “主板”选项卡 图7-21 SSTab控件属性页
7.10 鼠标器和键盘 7.10.1 鼠标器 1.鼠标事件 由用户操作鼠标所引起的、能够被VB各种对象识别的事件即为鼠标事件。常用的鼠标事件有单击(Click)、双击(DblClick)、按下任意键(MouseDown)、释放任意键(MouseUp)、移动鼠标(MouseMove)等。 鼠标事件的语法结构基本相同,下面以窗体上发生的MouseMove为例进行说明。 Private Sub <对象名>_MouseMove([index As Integer,] button As Integer,shift As Integer,x As Single,y As Single) 2.鼠标光标形状 鼠标光标的形状由对象的MousePointer属性确定,具体值可在属性窗口了解或参考VB帮助文件。
例7-12:设计绘图程序。要求:单击鼠标左键开始绘制,按下左键并移动鼠标进行绘制,释放鼠标则停止绘制,然后在新的位置开始绘制。用鼠标右键可以绘制较粗的线条。在窗体的左下角显示当前坐标值。例7-12:设计绘图程序。要求:单击鼠标左键开始绘制,按下左键并移动鼠标进行绘制,释放鼠标则停止绘制,然后在新的位置开始绘制。用鼠标右键可以绘制较粗的线条。在窗体的左下角显示当前坐标值。 (1)界面设计 图7-24 鼠标事件实例