实验5 基本控件(2) 5.1 列表框和组合框 实验目的 (1)熟练掌握列表框和组合框的常用属性。 (2)熟练掌握列表框和组合框的方法。 (3)学会使用对象浏览器。 实验内容 列表框用于列出可供用户选择的项目列表,用户只能从下拉列表中选择列表项输入。 组合框是列表框和文本框的组合,功能比列表框更强大,用户既可以自己输入,也可以选 择列表项输入。 列表框与组合框的属性基本相似,主要用来设置列表项,包括List 、Text 、ListIndex 、 ListCount 。列表框与组合框的方法和事件也基本相似,主要是添加和删除列表项的方法 AddItem() 和RemoveItem() ,常用事件是Click 事件。 【实验5-1 】创建人员管理的输入界面。 1. 界面设计 在窗体中放置3 个文本框Text1~Text3,其中Text1 和Text2 用于输入人员的工号和姓 名,Text3 用于显示人员的信息;2 个标签Label1 和Label2;2 个选项按钮Option1 和Option2 用于输入性别,用框架 Frame1 将选项按钮分为一组;组合框 Combo1 用于输入部门; Command1 为“显示”按钮。 2. 属性设置 属性设置见表5-1。 表5-1 属性设置 控件名属性名属性值控件名属性名属性值 Form1 Caption 输入人员信息Text1 Text 空 Label1 Caption 工号Text2 Text 空 Label2 Caption 姓名Text 生产部门 Label3 Caption 部门 Combo1 List 财务部门 行政部门 人事部门 销售部门 开发部门 生产部门 Frame1 Caption 性别 Option1 Caption 男 Value True Option2 Caption 女 Text3 Text 空 MultiLine True Command1 Caption 显示 实验 5 基本控件(2) 35 运行界面如图5-1 所示。 图5-1 运行界面 3. 程序代码设计 功能要求:单击“显示”按钮,将多个人员的信息显示在文本框Text3 中。 程序代码如下: 在装载窗体时将初始文字显示在文本框Text3 中。 Private Sub Form_Load() '装载窗体 Text3.Text = " 工号 "&" 姓名 "&" 性别 "&" 部门 "&_ Chr(13) + Chr(10) End Sub 单击“显示”按钮,取各控件的输入值,显示在文本框Text3 中。 Private Sub Command1_Click() '单击"显示"按钮 Dim s As String s=Text1&" "&Text2&" " If Option1.Value = True Then s=s&" 男"& " " Else s=s&" 女"& " " End If s = s & Combo1.Text Text3.Text = Text3.Text & s & Chr(13) + Chr(10) End Sub 程序分析:Combo1.Text 是组合框显示的字符串。 4. 修改程序 1)将文本框Text3 换成列表框List1 程序代码: Private Sub Form_Load() '装载窗体 36 Visual Basic 实训(第4 版) List1.AddItem " 工号 "&" 姓名 "&" 性别 "&" 部门 " End Sub 单击“显示”按钮,使用添加列表项的方法将每人的信息添加到列表框中。 Private Sub Command1_Click() '单击"显示"按 钮 Dim s As String s=Text1&" "&Text2&" " If Option1.Value = True Then s=s&" 男"& " " Else s=s&" 女"& " " End If s = s & Combo1.Text List1.AddItem s End Sub 练习: 将组合框Combo1 的List 属性清空,在装载窗体的事件中添加列表项。 2)增加两个按钮删除列表项 增加两个按钮“删除”Command2 和“清除全部”Command3 ,分别用于删除列表项 和清除所有列表项。程序代码如下: Private Sub Command2_Click( ) '删除列表 项 List1.RemoveItem List1.ListIndex End Sub Private Sub Command3_Click( ) '清除所有列表 项 List1.Clear End Sub 程序分析:List1.ListIndex 是当前选中的列表项 。 3)修改组合框和列表框的显示格 式 . 设置组合框的样式。设置组合框的样式分别为下拉组合框、简单组合框和下拉列表 组合框,将组合框的Style 属性设置为0、1、2。 . 设置组合框的Sorted 属性为True 。 . 设置列表框的Style 属性为1。 . 设置列表框的MultiSelect 属性为0、1、2。 . 设置列表框的Columns 属性为0、1、2。 练习: 将列表框的MultiSelect 属性设置为1,选择多个列表项时,单击“删除”按钮,查看 删除的列表项。 37 实验 5 基本控件(2) 5.2 图像框和定时器 实验目的 (1)熟练掌握图像框的属性设置。 (2)熟练掌握定时器的属性和事件。 实验内容 图片框和图像框都用于显示图形,可以显示.bmp 、.ico 、.wmf 、.jpg 、.gif 等类型的文 件。图像框通常用于显示静态的图片。 图片框和图像框使用LoadPicture 语句在程序运行时装载图片设置Picture 属性,通过 图像框的Stretch 属性设置图像框与图片的大小适应关系,通过图片框的AutoSize 属性设 置图片框与图片的大小适应关系。 定时器通常用来间隔一定时间触发事件,可以实现简单的动画。定时器的Interval 属 性用来设置计时间隔,Timer 事件是定时器的唯一事件,当达到Interval 属性规定的时间间 隔就触发该事件。 【实验5-2 】使用图像框显示图片,并移动和放大图片。 1. 界面设计 在窗体界面中放置1 个图像框Image1,4 个按钮Command1~Command4,用于左移、 右移、放大和缩小图像框。 2. 属性设置 属性设置见表5-2。 表5-2 属性设置 控件名属性名属性值控件名属性名属性值 Form1 Caption 显示图片Command2 Caption 右移 Image1 Stretch True Command3 Caption 放大 Command1 Caption 左移Command4 Caption 缩小 运行界面如图5-2 所示。 3. 程序代码设计 功能要求:单击“左移”按钮将图像框左移, 单击“右移”按钮将图像框右移,单击“放大”按 钮将图像框放大,单击“缩小”按钮将图像框缩小。 程序代码: 装载窗体时给图像框Image1 装载图片。 Private Sub Form_Load( ) '装载窗 体 图5-2 运行界面 38 Visual Basic 实训(第4 版) Image1.Picture = LoadPicture("c:\program files\ microsoft office\office\bitmaps\styles\globe.wmf" ) End Sub 当图像框没有移出窗体时,每次单击“左移”按钮,图像框向左移动100 像素。 Private Sub Command1_Click( ) '单击"左移"按 钮 If Image1.Left + Image1.Width > 100 Then Image1.Left = Image1.Left - 100 End If End Sub 当图像没有移出窗体时,每次单击“右移”按钮,向右移动100 像素。 Private Sub Command2_Click( ) '单击"右移"按 钮 If Form1.Width - Image1.Left > 100 Then Image1.Left = Image1.Left + 100 End If End Sub 当图像没有移出窗体时,每次单击“放大”按钮,宽度和高度都放大100 像素。 Private Sub Command3_Click( ) '单击"放大"按 钮 If Image1.Width < Form1.Width And Image1.Height < Form1.Height Then Image1.Width = Image1.Width + 100 Image1.Height = Image1.Height + 100 End If End Sub 当图像没有小于100 像素时,每次单击“缩小”按钮,宽度和高度都缩小100 像素。 Private Sub Command4_Click( ) '单击"缩小"按 钮 If Image1.Width > 100 And Image1.Height > 100 Then Image1.Width = Image1.Width -100 Image1.Height = Image1.Height - 100 End If End Sub 练习: 在属性窗口中设置Image1 的Picture 属性装载图片。 4. 修改程序 1)添加两个计时器Timer1 和Timer2 ,定时放大和缩小图片 添加两个定时器Timer1 和Timer2 ,其中Timer1 实现每0.1s 放大图片,Timer2 实现每 0.1s 缩小图片。定时器属性设置见表5-3。 实验 5 基本控件(2) 表5-3 定时器属性设置 39 控件名属性名属性值控件名属性名属性值 Timer1 Enabled False Timer2 Enabled False Interval 100 Interval 100 程序代码如下: Private Sub Command3_Click( ) '单击"放大"按 钮 Timer1.Enabled = True End Sub 当图像框不超过窗体时,每隔0.1s 图片放大;当图像框超过窗体时,定时器无效。 Private Sub Timer1_Timer( ) '每0.1s 放 大 If Image1.Width < Form1.Width And Image1.Height < Form1.Height Then Image1.Width = Image1.Width + 100 Image1.Height = Image1.Height + 100 Else Timer1.Enabled = False End If End Sub Private Sub Command4_Click( ) '单击"缩小"按 钮 Timer2. Enabled = True End Sub 当图像框宽度和高度没有小于100 像素时,每隔0.1s 图片缩小;当图像框宽度或高度 小于100 像素时,定时器无效。 Private Sub Timer2_Timer( ) '每0.1s 缩 小 If Image1.Width > 100 And Image1.Height > 100 Then Image1.Width = Image1.Width -100 Image1.Height = Image1.Height - 100 Else Timer2.Enabled = False End If End Sub 2)修改图像框的Stretch 属 性 将Image1 的Stretch 属性改为False ,查看图像显示 。 练习: 将图像框改为图片框,查看图像显示。 40 Visual Basic 实训(第4 版) 5.3 滚动条 实验目的 熟练掌握滚动条的属性和事件。 实验内容 滚动条控件包括水平滚动条和垂直滚动条。水平滚动条和垂直滚动条都用于滚动显示 内容,方向不同,动作相同。 水平滚动条和垂直滚动条有相同的属性、方法和事件。属性主要有设置滚动条的位置 值的Min、Max 和Value 。事件主要是当滚动条改变时触发Scroll 和Change 事件。 【实验5-3 】运用定时器和图像框设计一个屏幕保护界面,图像从屏幕最下面向上移 动,移出屏幕后又循环从最下面上移。 1. 界面设计 在窗体上放置3 个按钮“上移”“暂停”和“退出”(Command1~Command3),1 个 垂直滚动条Vscroll1,1 个图像框Image1,2 个标签Label1 和Label2(显示“快”和“慢”) , 以及一个定时器Timer1 。 2. 属性设置 启动时定时器Timer1 无效,定时间隔为1s;垂直滚动条Vscroll1 的最大值为950,最 小值为50,单击滚动框改变50。各对象的属性设置见表5-4 。 表5-4 各对象的属性设置 控件名属性名属性值控件名属性名属性值 Form1 Caption 定时移动图像Max 950 Label1 Caption 快Vscroll1 Min 50 Label2 Caption 慢 LargeChange 50 Image1 Stretch True Timer1 Enabled False Picture C:\\My Documents Interval 1000 \exe\picture\bt0057.bmp Command2 Caption 暂停 Command1 Caption 上移 Command3 Caption 退出 运行界面如图5-3 所示。 3. 程序代码设计 功能要求:单击“上移”按钮,开始定时地向上 移动图像框;单击“暂停”按钮,停止上移;改变滚 动条的位置可以改变上移的速度。 程序代码 : Private Sub Command1_Click() '单击"上移"按钮,启动计时器 Timer1.Enabled = True 图5-3 运行界面 41 实验 5 基本控件(2) End Sub 定时器每秒钟将图像框上移,当图像框超出窗体界面时就会移到最下面,再从最下面 开始上移。 Private Sub Timer1_Timer( ) '定时上 移 If Image1.Top + Image1.Height > 0 Then Image1.Move Image1.Left, Image1.Top - 100 Else Image1.Move Image1.Left, Me.Height End If End Sub 改变垂直滚动条的值,就改变了定时器的间隔。垂直滚动条的值越大,计时器的间隔 越短,移动的速度越快。 Private Sub Vscroll1_Change( ) '改变速 度 Timer1.Interval = 1000 - Vscroll1.Value End Sub Private Sub Command2_Click( ) '单击"暂停"按钮使定时器无 效 Timer1.Enabled = False End Sub Private Sub Command3_Click( ) '单击"退出"按 钮 End End Sub 程序分析 : . Me.Height 中的Me 是指窗体。 . 单击垂直滚动条Vscroll1 的上下箭头,Value 值改变1;单击滚动框,Value 值改变50。 4. 修改程序 1)查看垂直滚动条Vscroll1 的Scroll 事件 将Vscroll1_Change 事件的代码在Vscroll1_Scroll 事件中使用,可以看到这两个事件都 可以改变Value 值,只是触发事件的时刻不同。可添加如下的程序代码: Private Sub Vscroll1_Scroll( ) '拖动滚动条改变速 度 Timer1.Interval = 1000 - Vscroll1.Value End Sub Scroll 事件是拖动滚动框时触发,Change 事件是单击滚动条或滚动箭头以及释放滚动 42 Visual Basic 实训(第4 版) 框时触发。 2)修改定时器和滚动条的属性 . 在属性窗口中将定时器Timer1 的Interval 属性设置为100 。 . 在属性窗口中将滚动条Vscroll1 的Value 值设置为500 。 . 在属性窗口中将滚动条Vscroll1 的SmallChange 设置为20。 . 在属性窗口中将滚动条Vscroll1 的LargeChange 设置为100 。 3)使用程序代码装载图 片 在窗体的装载事件中添加程序代码 : Private Sub Form_Load( ) '装载窗 体 Image1.Picture = LoadPicture("C:\Visual Studio\Common\Graphics\Metafile\Arrows" ) End Sub 练习: 将“上移”按钮改为“下移”按钮,应如何修改程序? 5.4 对象浏览器 实验目的 学会使用对象浏览器查找选项按钮和复选框的方法和属性,并将代码过程粘贴到自己 的应用程序中。 实验内容 1. 打开对象浏览器 打开对象浏览器有以下几种方法: . 选择“视图”→“对象浏览器”菜单项。 . 按F2 键。 . 在工具栏上单击“对象浏览器”按钮 。 对象浏览器如图5-4 所示 。 2. 使用对象浏览器 查看复选框属性的步骤如下: ① 在“工程/库”框中输入VB。 ② 在“搜索文本”框中输入checkbox 。 ③ 单击“搜索”按钮,打开了“搜索结果”框,并在右侧显示了CheckBox 的成员。 ④ 选择Style 属性,查看属性功能,如图5-5 所示。 ⑤ 单击向前按钮 或向后按钮 ,查看以后或以前的搜索结果。 ⑥ 单击帮助按钮,打开的VB 帮助窗口显示了Style 属性的帮助信息。 ⑦ 在详细信息框中单击绿色的文字,超链接到相应的信息。 实验 5 基本控件(2) 43 图5-4 对象浏览器图5-5 搜索结果 ⑧ 单击隐藏搜索结果按钮,折叠搜索结果框。 ⑨ 选择详细信息框中的内容,单击复制到剪贴板按钮 ,复制选择的内容。 练习: 在对象浏览器中查找VBA 库中的Math 类中的Sin 函数的信息。 5.5 综合练习 【实验5-4 】在窗体上放置1 个按钮和1 个标签,单击按钮后计时器控件开始计时, 并在标签内每秒显示所经过的秒数。 【实验5-5 】在窗体上放置1 个Image 控件,并添加图片,使用两个滚动条的输入调 整Image 控件尺寸的大小。垂直滚动条用于调整Image 控件的高度,水平滚动条用于调整 Image 控件的宽度。 【实验5-6】在窗体中使用2 个列表框显示著 名大学,单击按钮使列表项在2 个列表框间移动。 运行界面如图5-6 所示。 图5-6 运行界面