《第09章VB常用控件课件.ppt》由会员分享,可在线阅读,更多相关《第09章VB常用控件课件.ppt(59页珍藏版)》请在三一办公上搜索。
1、第九章 VB常用控件,单选钮框架复选框列表框、组合列表框滚动条图片框、图像框定时器,9.1 单选钮和框架,很多数据需要在一组固定的数据中选择一个值,可以使用下面两个控件:单选钮控件(OptionButton)提供单项选择,一组单选钮只能有一个能被选中。框架控件(Frame)是窗体上的一个长方形边框,带有一个选项标题,它可以成为其他控件的容器,通常用于单选钮的分组,使一个窗体能提供多个单选钮组。此外使用框架可以让复杂的画面显得条理分明,整齐易看。,单选钮OptionButton,以上是标准外形,包含一个圆形钮和附在其后的文字。u Caption属性:用来指定文字。,OptionButton控件的
2、风格,此外,单选钮也可以有丰富的图形外观。Style属性:用来指示控件的显示风格和行为。设计时缺省取值为0-Standard,即标准的,如果设置为1-Graphical,则支持图形外观,以下属性设置将生效。Picture属性:设置控件中要显示的图片,该属性可以在“属性窗口”中直接设置,也可以在程序中用LoadPicture函数加载。如果Caption属性有值,则按钮中同时显示图片和文字。DownPicture属性:设置控件被单击并处于压下状态时显示的图片。DisabledPicture属性:设置控件在无效时显示的图片,也就是控件的Enabled属性取值为False时控件的外观图片。,Optio
3、nButton控件的图形外观,这种图形方式的单选钮比文字更为直观,适合儿童软件或游戏软件中的单选。,如何使用OptionButton控件,创建单选按钮组缺省时直接放到窗体上的所有单选钮自动构成一组,仅有一个按钮能被选中。在窗体中绘制多个框架(Frame或PitureBox)将属于不同类别的单选钮分别放置到各自的框架中,可得到多组单选钮。选定按钮(引发一个Click事件)运行时选中或设置Value属性为True禁止选项按钮,Enabled属性为False在一个值上重复点击,Click事件只发生一次,OptionButton控件的值,Value属性 单选钮的Value属性确定该单选钮是否被选中。T
4、rue表示被选中,否则没有选中。可以在代码中将Value属性设为True来选定单选钮。例如:optBoy.Value=True如果要在单选钮组中设置缺省单选钮,可以在设计时通过“属性窗口”将相应单选钮的Value属性设为True,或者在窗口加载事件代码中设定Value属性为True。,OptionButton控件示例,选中个人Private Sub optOne_Click()serviceFee=500 Call DisplayPriceEnd Sub 选中飞机Private Sub optVehicle1_Click()travellingFee=2000 Call DisplayPric
5、eEnd Sub 显示总的预算价格Private Sub DisplayPrice()lblPrice=初步预算大约为:&serviceFee+travellingFee+hotelFeeEnd Sub,【例】编写程序,使用分组单选钮提供多种旅游选项,响应单选钮的选择,显示当前各选项的组合报价。以下三个变量分别代表旅行社服务费、路费和住宿费Dim serviceFee As IntegerDim travellingFee As IntegerDim hotelFee As Integer 窗体加载,先根据缺省设置,计算费用Private Sub Form_Load()serviceFee=3
6、00 travellingFee=2000 hotelFee=800 call displayPriceEnd Sub 选中团体Private Sub optTeam_Click()serviceFee=300 Call DisplayPriceEnd Sub,9.2 复选框,复选框控件(CheckBox)提供多项选择,一组复选框中能选中一个或多个值。,复选框的值,用法与OptionButton相似,但值不同:Value=False/0 没有选中Value=True/1 选中Value=2 变灰,不可用,复选框示例,【例】编写程序,使用复选框来控制文本框中文本的字体效果(粗体、斜体或下划线)。
7、界面效果如图所示,复选框示例,点击粗体复选框Private Sub ChkBold_Click()If ChkBold.Value=1 Then txtDisplay.FontBold=True Else txtDisplay.FontBold=False End IfEnd Sub 点击斜体复选框Private Sub ChkItalic_Click()If ChkItalic.Value=1 Then txtDisplay.FontItalic=True Else txtDisplay.FontItalic=False End IfEnd Sub,点击下划线复选框Private Sub C
8、hkUnderline_Click()If ChkUnderline.Value=1 Then txtDisplay.FontUnderline=True Else txtDisplay.FontUnderline=False End IfEnd Sub,9.3 列表框,列表框控件(ListBox)是一个显示多个项目列表的窗口,用户可以浏览并从中选中一个或者多个项目。,列表框项目的增减,AddItem 向列表框中添加项目lstCity.AddItem“ShangHai”,1参数1是要添加的字符串,参数2是添加的位置(索引值),第一个项目索引值为0 Remove 从列表中删除项目lstCity.
9、RemoveItem 0项目删除后,之后项目的索引值会自动修正Clear 清除列表中的所有项目lstCity.Clear,*在设计时添加项目(使用属性窗口)*List属性下拉文本框可输入,Ctrl+Enter换行,取列表框项目:List属性:记录列表框中的全部项目值。List属性是一个字符串数组,列表框中的每个项目对应该数组的一个元素,通过索引值来访问列表框的每个项目。第一个项目的索引值为0,以此类推。Debug.Print List1.List(0)strProvince=List2.List(1)ListCount属性:该属性记录当前列表框的项目总数。比如下列代码可以输出列表框的全部内容:
10、For i=0 To List1.ListCount Debug.Print List1.List(i)Next,ListBox控件的值,选中的列表项目:MultiSelect属性:当取默认值0-None时,永远只能选中列表框中的一个项目,当前选定项目的索引位置可以通过控件的ListIndex属性来取得。ListIndex属性仅在程序运行时可用,用于设置或返回列表框中当前选定项目的索引位置。如果没有项目被选中,则ListIndex属性取值为-1。取得当前选中的项目内容时,可以这样书写:List1.List(List1.ListIndex),ListBox控件的选择,【例】编写一个程序,输入要采
11、购的书籍名称,按下添加按钮后,将输入的内容添加到一个采购列表框中,同时也可以选中列表框某书,按删除按钮从列表框中删除。,单选ListBox控件示例1,按下添加按钮的代码Private Sub cmdAdd_Click()lstBook.AddItem txtBook.Text txtBook.Text=txtBook.SetFocusEnd Sub 按下删除按钮的代码Private Sub cmdDelete_Click()If lstBook.ListIndex-1 Then 有选择项目 lstBook.RemoveItem lstBook.ListIndex End IfEnd Sub,单
12、选ListBox控件示例1,MultiSelect属性:设置为1-Simple或者2-Extended时,列表框可以实现多选。前者表示简单复选,即利用鼠标单击或按下空格键在列表中选中或取消选中项,而箭头键仅移动焦点。后者表示扩展复选,其用法与Windows的文件列表的选择方法完全一样。Selected属性:该属性用来判断列表框中某一个项目是否被选中,只能在运行时被使用。取值为True代表选中,False表示未选中。使用该属性需要指定项目的索引值,如下:List1.Selected(0)返回列表中的第1个项目是否选中List1.Selected(1)返回列表中的第2个项目是否选中,多选ListB
13、ox控件,按下删除按钮的代码Private Sub cmdDelete_Click()Dim i As Integer For i=lstBook.ListCount-1 To 0 Step-1 If lstBook.Selected(i)=True Then lstBook.RemoveItem i End If NextEnd Sub因为删除一个项目后,其后的项目索引值和列表项目数都会发生变化,难以编程实现。所以列表框从后往前循环做删除操作。,多选ListBox控件示例1,四、Click事件和DblClick事件当选择列表框中的项目时,将触发Click事件,双击列表框中的项目,将触发Dbl
14、Click事件。如果在Click事件中有代码,则DlbClick事件将永远不会被触发,因为Click事件是优先被触发的事件。通常会响应DblClick事件,ListBox控件的事件,【例】编写一个程序,显示学期所有可选课程列表,学生选课时在课程列表中选择一个或多个课程添加到选中课程列表框中,选过的课从可选课程列表中删除。设计两个列表框,分别是lstLeft和lstRight,ListBox控件示例2,首先初始化可选课程列表框,在其中添加所有的选修课程名称:Private Sub Form_Load()lstLeft.AddItem 大学语文 lstLeft.AddItem 文化学 lstLef
15、t.AddItem 音乐欣赏 lstLeft.AddItem 日语 lstLeft.AddItem 数学建模 lstLeft.AddItem Web程序设计 lstLeft.AddItem 信息系统安全 lstLeft.AddItem Linux操作系统 lstLeft.AddItem Visual C+End Sub,ListBox控件示例2,【-】按钮的事件过程表示所有课程全部选中,即可选课程中的所有课程全部增加到选中课程列表框中,代码如下:Private Sub cmdAllToRight_Click()Dim i As Integer For i=0 To lstLeft.ListCo
16、unt 1 lstRight.AddItem lstLeft.List(i)Next lstLeft.Clear清除可选课列表框End Sub【-】按钮的事件过程表示取消所有的选课,将选中课程列表中的全部课程送回课选课程列表框中,代码如下:Private Sub cmdAllToRight_Click()Dim i As Integer For i=0 To lstRight.ListCount 1 lstLeft.AddItem lstRight.List(i)Next lstRight.Clear清除已选课列表框End Sub,ListBox控件示例2,因为上述两个过程完成的操作基本相同,
17、可以共用代码。因此编写了一个通用子程序moveAllItems,其功能是将第一个参数指定的列表框中的全部项目转移到第二个参数指定的列表框中。Private Sub moveAllItems(objSource As Object,objTarget As Object)Dim i As Integer For i=0 To objSource.ListCount 1 objTarget.AddItem objSource.List(i)Next objSource.Clear End Sub,ListBox控件示例2,【-】按钮的事件过程:Private Sub cmdAllToRight_C
18、lick()moveAllItems lstLeft,lstRightEnd Sub,【-】按钮的事件过程:Private Sub cmdAllToLeft_Click()moveAllItems lstRight,lstLeftEnd Sub,【-】按钮实现将lstLeft列表框中所有选中的项目增加到右列表框中,即选课操作;【-】按钮将右列表框选中的课程送回到左列表框中,即取消选课。该过程将第一个列表框的选中项目转移到第二个列表框中Private Sub moveItem(objSource As Object,objTarget As Object)Dim i As Integer For
19、 i=objSource.ListCount-1 To 0 Step-1 If objSource.Selected(i)=True Then 选中的项目进行转移 objTarget.AddItem objSource.List(i)objSource.RemoveItem i End If NextEnd Sub,ListBox控件示例2,选择课程到选课列表框中Private Sub cmdToRight_Click()moveItem lstLeft,lstRightEnd Sub,取消某些已选选课 Private Sub cmdToLeft_Click()moveItem lstRigh
20、t,lstLeftEnd Sub,Style属性:指定列表框的显示风格。默认设置是0Standard,当设置为1Checkbox时,在列表框的每一个项目边上都有一个复选框,此时MultiSelect属性自动被设置为0None,并且不允许其它的设置,多选则。通过复选框来实现,有标记的项目表示被选中,反之则没有选中。,ListBox控件的风格,Sorted属性:指定列表框的项目是否自动按字母顺序排序,取值为False表示不排序,项目怎样添加进去的就怎样显示;当取值为True时,所有项目按照字母顺序排列显示(中文按汉语拼音顺序),添加或删除项目后仍然会遵守顺序。SelCount属性:该属性返回当前被
21、选中的列表项目的数量,如果没有项目被选中,那么SelCount属性将返回值0。该属性对允许多选的列表框是较为有用的。Text属性:单选列表框可以用Text属性来获取当前选择的项目。,ListBox控件的其他属性,9.4 组合列表框,组合框控件(ComboBox)与列表框控件有些类似,可以看作是TextBox和ListBox的结合体。组合框不仅允许用户在列表框中选择项目,还允许用户在文本框中输入文本的方式来选择项目或指定文本。,组合框有三种样式,可以用Style属性来设置样式:下拉式组合框:Style属性设置为0 Dropdown Combo),包括一个文本框和一个下拉才出现的列表框,这是缺省的
22、样式。简单组合框:Style属性设置为1Simple Combo,控件包括一个文本框和一个固定显示的列表框。下拉式列表框:Style属性设置为2Dropdown List,此样式不具备文本框,不允许输入新的项目,仅能从列表中选择。,组合列表框的样式,Text属性:获取组合框当前选定项目值,即最后文本框中显示的文本。该文本既可以是选定的列表项目,也可以是用户在文本框中输入的字符串。【例】编写一个程序,使用组合框显示和查询学校所有的系以及该系的所有专业。,ComboBox控件的值,初始化系名组合框Private Sub Form_Load()cboFac.AddItem 物理系 cboFac.Ad
23、dItem 化学系 cboFac.AddItem 计算机系End Sub,ComboBox控件举例,根据选择的系名,填充不同的专业Private Sub cboFac_click()cboSpec.Clear Select Case cboFac.Text Case 物理系 cboSpec.AddItem 理论物理 cboSpec.AddItem 应用物理 cboSpec.AddItem 天文物理 Case 化学系 cboSpec.AddItem 生物化学 cboSpec.AddItem 精细化工 Case 计算机系 cboSpec.AddItem 软件 cboSpec.AddItem 通信
24、cboSpec.AddItem 信息管理 End SelectEnd Sub,9.5 滚动条,滚动条让用户控制数值在某指定范围内的变化,通过用鼠标移动滚动条的位置来获得特定值。对于不能自动支持滚动的控件,滚动条控件能帮助它们提供滚动功能,水平滚动条(HScrollBar)和垂直滚动条(VScrollBar)。,滚动条的事件,Scroll Bar控件如何工作?两个重要事件:Change 在滚动块移动后发生(鼠标抬起后)Scroll 在移动滚动块时发生,在单击滚动箭头或滚动条时不发生,常用属性:Min 滚动块在最上或最左时所代表的值Max 滚动块在最下或最右时所代表的值LargeChange 单击
25、滚动块左右时增减的值SmallChange 单击左右箭头时增减的值Value 滚动条当前的值,即滚动块的位置值示例1:简单的滚动条数值显示(或控制字体变化)示例2:三元色的组合,滚动条的属性,【例】编写一个程序,用滚动条控件改变文本框内文本的字体大小。界面效果如图所示。,滚动条示例,设置滚动条vsbSize属性:Min=8Max=72LargeChange=5SmallChange=1,窗体加载的事件过程如下:Private Sub Form_Load()Dim iDefaultSize As Integer 定义初始的字体大小 iDefaultSize=72 lblSize.Caption=
26、iDefaultSize 标签显示初始字体 txtDisplay.FontSize=iDefaultSize 初始化文本框字体大小 VsbSize.Value=iDefaultSize 初始化滚动条的值End Sub滚动条滚动的事件过程如下:Private Sub VsbSize_Change()txtDisplay.FontSize=VsbSize.Value lblSize.Caption=VsbSize.ValueEnd Sub,滚动条示例,如果在拖动滚动块不松开时,也要同步设置字体大小,则需要增加Scroll事件过程,同Change事件过程。,9.6 图片框,图片框控件(Picture
27、Box)可以用于显示图片和图像可以作为其它控件的容器,类似于Frame控件,如何显示图像,Picture属性,指定显示图象设计时在“属性窗口”中的Picture属性栏中,选择图片文件,就可将图片加载到PictureBox控件中;从其它应用程序中复制图形后把它粘贴到PictureBox控件中。在程序中使用LoadPicture函数对Picture属性赋值,因为Picture属性是对象类型,所以需要使用Set关键字,如:Set Picture1.Picture=LoadPicture(d:map中国.jpg)Set Picture2.Picture=LoadPicture(d:map美国.jpg)
28、Set Picture2.Picture=LoadPicture 清除图片,AutoSize属性,AutoSize属性:使控件自动调节以适应图象大小第一个图片框AutoSize属性为False第二个图片框AutoSize属性为True,PictureBox控件的高和宽,图片框有三组表示高和宽的属性,分别代表不同的含义:图片框控件的高和宽:同其它控件一样,PictureBox控件的Height和Width属性分别记录图片框控件所占空间的高度和宽度。图片的高和宽:图片可能小于或超过控件的范围,要取得图片的真实大小,可以利用控件的Picture对象来获取,Picture对象的Height和Width
29、属性分别记录图片的高度和宽度,如Picture1.Picture.Height可取得第一个图片框内图片的高度,但要注意的是这两个属性的度量单位与控件的缺省度量单位不同。图片框内部绘图区的高和宽:在VB中,PictureBox控件有两个特殊的属性:ScaleWidth和ScaleHeight,它们代表的是图片框内部区域的水平或垂直度量单位,图片框内部绘图区的精确尺寸应略小于图片框的尺寸。,在图片框上绘图,可以利用图片框的方法在图片框上绘制文字或图形常用方法:Print输出文本Circle,Line,Point,Pset画图PaintPicture方法,在控件上绘制图象文件,可以实现图像的缩放、平
30、铺、淡化效果等。,9.7 图像框,图像框控件(Image)也可以用于显示图片和图像,Image控件是轻量图形控件,需要较少的系统资源,显示速度较快,Image控件的属性,只能用于显示图象,不能作为容器,加载速度快Picture属性,显示的图象,缺省情况下,Image控件总是根据图片大小自动调整其尺寸,而不管设计时所定义的控件尺寸,这样图片能保持其原始尺寸并得到完整的显示。Stretch属性,设定图象是否自动调整大小适应控件,一个图片显示程序,【例】编写图片显示程序,提供图片按照窗口高度、按照窗口宽度和实际大小三种方式显示。,使用PictureBox作为容器,使用Image来显示图片,因为Ima
31、ge不仅可以以原始尺寸显示图片,图片还会自动调节适应Image1控件尺寸,一个图片显示程序,当适应窗口高度时,将Image1控件的Height属性设置为Picture1控件的内部区域的高度,同时按照图片比例计算Width属性值,最后设置Stretch属性为True,图片便自动适应窗口高度显示。Private Sub optHeight_Click()Image1.Width=Image1.Width*Picture1.ScaleHeight/Image1.Height Image1.Height=Picture1.ScaleHeight Image1.Stretch=TrueEnd Sub,一
32、个图片显示程序,当适应窗口宽度时,将Image1控件的Width属性设置为Picture1控件的内部区域的宽度,同时按照图片比例计算Height属性值,同样设置Stretch属性为True,图片便自动适应窗口宽度显示。Private Sub optWidth_Click()Image1.Height=Image1.Height*Picture1.ScaleWidth/Image1.Width Image1.Width=Picture1.ScaleWidth Image1.Stretch=TrueEnd Sub,一个图片显示程序,选择实际大小时,只要将Image1控件的Stretch属性设置为F
33、alse即可,代码如下:Private Sub optActual_Click()Image1.Stretch=FalseEnd Sub,一个图片显示程序,太大的图片需要有滚动条因此设计一个垂直滚动条和一个水平滚动条,放置在图片框旁边滚动条的最大值就是图片的高宽(Max属性)如果图片高宽不超出范围,则滚动条不可见(Visible属性),一个图片显示程序,设置滚动条的初始值:保证滚动条与图片窗口对齐 HScroll1.Top=Picture1.Height+Picture1.Top HScroll1.Left=Picture1.Left HScroll1.Width=Picture1.Width
34、 VScroll1.Top=Picture1.Top VScroll1.Left=Picture1.Width+Picture1.Left VScroll1.Height=Picture1.Height 设置滚动条的最小值 HScroll1.Min=0 VScroll1.Min=0,一个图片显示程序,设置滚动条是否可见:如果图太小,不超过边框,则滚动条不可见 If Picture1.Width Image1.Width Then HScroll1.Visible=True HScroll1.Max=(Image1.Width-Picture1.Width)HScroll1.LargeChang
35、e=HScroll1.Max/10 Else HScroll1.Visible=False End If If Picture1.Height Image1.Height Then VScroll1.Visible=True VScroll1.Max=(Image1.Height-Picture1.Height)VScroll1.LargeChange=VScroll1.Max/10 Else VScroll1.Visible=False End If,一个图片显示程序,响应滚动条变化事件:水平滚动条向右滚动后,图片向左移动,需要设置image控件的left坐标水平滚动条移动Private S
36、ub HScroll1_Change()Image1.Left=-HScroll1.ValueEnd Sub同理,垂直滚动条移动Private Sub VScroll1_Change()Image1.Top=-VScroll1.ValueEnd Sub,一个图片显示程序,响应滚动条滚动事件:在按下鼠标托着滚动块滚动的时候(鼠标不放下,不会产生Change事件),最好图片也随之移动,需要响应Scroll事件Private Sub HScroll1_Scroll()Image1.Left=-HScroll1.ValueEnd SubPrivate Sub VScroll1_Scroll()Imag
37、e1.Top=-VScroll1.ValueEnd Sub,9.8 定时器,定时器控件(Timer)能够按照指定时间间隔不停地产生时钟信号(定时发生Timer时钟事件),可以制作动画,或定时操作。,定时器控件Timer,功能:有规律地引发Timer事件Enabled属性,为True工作,为False关闭Interval属性,时间间隔,以毫秒计,最大值为65535。Timer事件,在该事件过程中可以定义有规律的操作(动作)支持多个活动Timer控件,定时器控件示例1,【例】在窗口的标题栏实时显示当前的系统时间,并实现整点报时。(为了精确将Timer控件的Interval属性设置为500。)Pri
38、vate Sub Form_Load()Me.Caption=TimeEnd Sub 定时刷新标题Private Sub Timer1_Timer()If Me.Caption CStr(Time)Then 避免相同的时间刷新或报告两次 Me.Caption=Time If Minute(Time)=0 And Second(Time)=0 Then 整点 Beep MsgBox 现在是&Hour(Time)&点整 End If End IfEnd Sub,定时器控件示例2,【例】编程将一幅图片从小尺寸逐渐放大,直到充满整个窗体。,Private Sub Timer1_Timer()If Im
39、age1.Width*1.05Me.ScaleWidth And _ Image1.Height*1.05 Me.ScaleHeight Then Image1.Width=Image1.Width*1.05 Image1.Height=Image1.Height*1.05 Label1.FontSize=Label1.FontSize+2 Else Timer1.Enabled=False End If End Sub,一个动画(活动的大嘴),功能:大嘴在吃东西,从左到右。需要的控件:一个工作的图像框(imgBM),几个放置不同嘴形的图像框(Image1(4)),定时器,一个动画(活动的大嘴
40、),编程思路:定时器时钟事件中,让工作图像框不停改变嘴形,并且向右移动位置。Private Sub Timer1_Timer()Static Idx As Integer 计数器,控制嘴形循环 改变嘴形 imgBM.Picture=Image1(Idx).Picture 向右走,当超出右边界后回到左边重新开始 imgBM.Left=imgBM.Left+imgBM.Width/10 If imgBM.Left Form1.ScaleWidth Then imgBM.Left=-imgBM.Width End If 四个嘴形不停循环 Idx=Idx+1 If Idx=4 Then Idx=0End Sub,