资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第五章 常用控件,2,真正体会,可视化,带来的便利,应用程序,可视部分(,GUI,),代码部分,窗体,(Form),控件,(Control),内部控件,ActiveX,控件,可插入的对象,之前章节学习的重点,3,复习并加深理解窗体的三要素,1,、基本属性(,这些属性在其它很多控件中都有,),(,1,),Name,属性,对象的唯一名称,自动生成,可以更改。,在程序代码中引用,,不会显示在控件表面。,(,2,),Caption,属性,该属性决定了控件上标题显示的内容。,4,(,3,),Backcolor,:背景颜色属性,设置窗体对象的背景颜色。,(,4,),Forecolor,:前景颜色属性,设置窗体对象中的图片或文本的前景颜色。,(,5,),Font,:窗体上显示的字体,属性组,FontName,属性决定字体(缺省为宋体),FontSize,属性决定字体大小。,FontBold,属性决定是否是粗体。,FontItalic,属性决定是否是斜体。,FontStrikeThru,属性决定是否加一删除线。,FontUnderLine,属性决定是否带下划线。,5,(,6,),Enabled,属性,决定控件是否可操作。当设置为,False,时,控件,呈灰色,禁止用户进行操作。,(,7,),Visible,属性,决定控件是否可见。当设置为,False,时,用户看,不到,,但控件是存在的,。,6,(,8,),Height,、,Width,、,Top,和,Left,属性,默认单位为,twip,(缇),1 twip=1/20,磅,=1/1440,英寸,=1/567 cm,Height,Width,Left,Top,7,Form1.Height,Form1.Width,Form1.Left,Form1.Top,Ok.Height,Ok.Width,Ok.Left,Ok.Top,8,窗体,除了基本属性:,Name,Caption,Height,Width,Top,Left,Enabled,Visible,Font,ForeColor,BackColor,等之外,还有,1,、,MaxButton,、,MinButton,最大化按钮、最小化按钮,2,、,Icon,图标属性,3,、,AutoRedraw,属性,True,:对文字或图形进行自动重绘。,9,2,、常用方法,窗体,(,1,),Print,(,2,),Cls,清除,运行时,在窗体上显示的文本或图形。,(,3,),Move,Object.Move Left,,,Top,,,Width,,,Height,除此之外还有,Hide,、,Show,等,10,窗体,3,、常用事件:,(,1,),Click/DblClick,:,单击,/,双击窗体触发。,(,2,),Load,:,窗体被装入时触发的事件。该事件通常用来在启动应用程序时对,属性和变量进行初始化,。与之对应的是,Unload,事件。,11,5.1.1,命令按钮(,CommandButton,),(,1,)基本属性,Name:,(,微软建议的前缀为,cmd,),唯一性,只能在属性窗口设置,Caption:,标题属性,命令按钮显示的内容,可在某字母前加,“,&,“,设置快捷 键。,例如:,&Ok ,显示,O,k,Enabled:,设置控件是否可用,可以在运行时赋值,例如:,Private Sub Form_Load(),Command1.Caption=,“,开始,Command2.Caption=,“,退出,Command2.Enabled=False,End Sub,Private Sub Command1_Click(),Command2.Enabled=True,End Sub,5.1.1,命令按钮,(,2,)其它属性,Backcolor,:,(配合,Style,属性),Cancel,:,(设置命令按钮是否是取消命令按钮,配合,Esc,键。一个窗体只能有一个),Default,:,(缺省命令按钮,配合,Enter,键使用,也只有一个),Value,:,(当程序代码中设置某按钮的,Value,属性为,True,时,相当于调用该命令按钮的,Click,事件),ToolTipText,:,(设置鼠标停留时,命令按钮的提示信息),Height,Width,Top,Left,Visible,FontName,FontBold,FontItalic,FontUnderline,等,。,13,Picture:,按钮可显示图片文件,只有当,Style,属性值设为,1,时有效。,Style:,显示形式:,0,只能显示文字,1,文字、图形均可。,5.1.1,命令按钮,事件:单击事件,Click,14,5.1.2,标签(,Label,),用于显示文本,(,输出,),信息,,不能作为输入信息的界面,。,最常用属性,:,Name,(微软建议的前缀为,lbl,),Caption Height,Width,Top,Left,Enabled,Visible,FontName,FontBold,Backstyle,Alignment,Autosize,等。,标签控件的事件与方法都不常用,15,5.1.3,文本框(,TextBox,),是一个文本编辑区域,可在该区域输入,编 辑和显示正文内容。,(,1,)基本属性,Name,(微软建议的前缀为,txt,),Height,Width,Top,Left,Enabled,Visible,FontName,FontBold,FontItalic,FontUnderline,Alignment,等。,(,2,),Text,属性(,文本框没有,Caption,属性,),在文本框中显示的正文内容存放在,Text,属性中。当程序运行时,用户通过键盘输入正文内容,保存在,Text,属性中。,16,Maxlength,:,可以输入正文的最多字符个数,,0,为任意 长度,最大,65535,。,MultiLine,:,是否为多行,默认为,False,。,ScrollBars,:,滚动条的形式,当,MultiLine,为,True,时,该 属性才有效。没有(,0,)、水平(,1,)、垂直(,2,)或者两者都有(,3,),Locked,:,是否可被编辑属性,,False,表示为可编辑。,PasswordChar,:,作为密码框时,显示的字符。但,并不改,变,Text,属性的内容,。,(,3,)文本框其他属性,5.1.3,文本框,1,、,SelStart,属性,。指定选定文本块的起始位置,如果没有选定文本,则该属性指定光标的位置。若为,0,,则指示文本框第一个字符之前,如果等于文本框的长度,则指示文本框最后一个字符之后。,2,、,SelLength,属性,。指定所选的字符个数。,3,、,SelText,属性,。指定选定的字符,若没有选定,则为空,5.1.3,文本框,(,4,)文本框的,3,个设计时才可用的重要属性,例如:,Private Sub Command1_Click(),Print Text1.SelStart;Text1.SelLength;Text1.SelText,End Sub,18,2,、常用事件:,Change,:,当改变文本框的,Text,属性时会引发该事件。当用户输入一个字符,就会触发一次,Change,事件。,5.1.3,文本框,例如:,Private Sub Text1_Change(),If Val(Text1.Text)0 Then,Command1.Enabled=True,Else,Command1.Enabled=False,End If,End Sub,2,、常用事件:,KeyPress,:,当文本框获得焦点并且用户按下了键盘上的按键后触发。其格式为:,Private Sub Text1_KeyPress,(KeyAscii As Integer),.,End Sub,参数,KeyAscii,的值自动获得触发,KeyPress,事件时,击键所对应的,ASCII,码值,,如果在程序里改变,KeyAscii,的值将会改变文本框显示的字符。,5.1.3,文本框,例如:,Private Sub Text1_KeyPress(KeyAscii As Integer),If KeyAscii 57 Then,KeyAscii=0,End If,End Sub,20,5.2.1,复选框,Value,(整型值):,0-Unchecked,:,未被,选定,1-Checked,:选定,2-Grayed,:,灰色,微软建议的前缀为,chk,。,重要属性:,Caption,、,Alignment,和,Value,21,5.2.1,复选框,事件:,单击,Click,事件,。,其对,Value,属性值的改变遵循以下规则:,单击未选中的复选框时,,Value,属性值变为,1,;,单击已选中的复选框时,,Value,属性值变为,0,;,单击灰色的复选框时,,Value,属性值变为,0,。,22,5.2.2,单选按钮,微软建议的前缀为,opt,。,单选按钮:必须成组,出现,,用户只能选择,其中的一项,。,重要属性,Caption,:,设置单选按钮的文本内容。,False:,单选按钮未被,选定(缺省设置),True:,单选按钮被,选定,Value,(逻辑值):,事件:单击事件,Click,单选钮和复选框的主要区别,在,一个容器,内,多个复选框可以同时被选中,而单选钮只能被选中一个。,在运行时,复选框反复点击,它的,Value,属性值在,0,和,1,之间变化,而单选钮如果被反复点击,其,Value,属性值一直是,True,,只有当点击了其它单选钮的时候,才会变为,False,。,24,5.2.3,框架(,Frame,),作为其它控件的,“,容器,”,来使用。微软建议的前缀为,fra,。,重要属性:,Caption,:,框架标题。,Enabled,:,缺省为,True,,若设置为,False,,标题呈灰色,不允许对框架内的,所有,对象进行操作。,Visible,:,设置影响框架内的,所有,对象。,框架一般都是用来,“,盛放,”,单选按钮或复选框的。,注意往框架容器中放置控件的方法。,实例,5-4,利用框架和单选钮建立一个字体、字号、颜色设置的对话框。,26,5.3.1,列表框(,ListBox,),ListBox,控件显示项目列表,从其中可以选择一项或多项。微软建议的前缀为,lst,。,常用属性:,1,、,List,属性:,返回或设置列表框控件的列表项。配合列表项数组的索引实现。,可以在属性窗口中设置,List,属性。注意用,Ctrl+Enter,来换行。,在过程中访问该属性的格式为:,列表框控件名,.List(Index),其中,Index,是索引,,列表框中第一个列表项的索引为,0,后面依次类推。,例如:,List1.List(2)=“piece”,2,、,MultiSelect,属性:,指示列表框能否复选以及怎么复选。,可以取值,0,、,1,或者,2,。,3,、,Selcount,属性:,返回列表框控件中被选中列表项的个数。,4,、,Style,属性:,确定是否将复选框显示在列表框控件中。,List1.ListIndex=,List1.ListCount=,List1.Selected(3)=,List1.Sorted=,List1.Text=,与,List1.List(list1.ListIndex),的值相等,3 (,下标从,0,开始的,),5,True,,其余为,False,False,,没有排序。,“,cox”,其它常用属性:,5.3.1,列表框(,ListBox,),列表框中最后一个列表项的索引值是,List1.ListCount-1,如果是复选的列表框,则,Text,属性返回的是最后一个选中列表框的内容。,28,5.3.2,组合框(,ComboBox,),ComboBox=TextBox+ListBox,微软建议的前缀为,cbo,。,除了选择已有的选项,还可以自行输入。,只允许选择已有的选项。,下拉式组合框 简单组合框 下拉式列表框,Style=0 Style=1 Style=2,List,:,往列表框里添加选项,要特别注意必须使用,Ctrl+Enter,键,Text,:,和列表框类似,不过还可以输入。,29,常用方法:,(,1,),AddItem,把一个项目(字符串)加入列表框。,使用形式:对象,.AddItem,item,index,其中,:,item,为字符串表达式,表示要加入的项目。,index,决定新增项目的位置,缺省则添加在最后,(,2,),RemoveItem,删除列表框中一个项目。,使用形式:对象,.RemoveItem,index,其中:,index,为被删除项目在列表中的位置。首项为,0,(,3,),Clear,清出列表框中的所有内容。,使用形式:对象,.Clear,注意:,“,对象,”,可以是列表框、组合框。,常用事件:,Click,、,DblClick,、,keypress,组合框还有,Change,事件,列表框和组合框(,ListBox,、,ComboBox,)的常用方法,实例,5-5,设计一个程序对列表框进行管理,能添加、删除和清空列表框里的内容。,31,5.4.1,滚动条(,HscrollBar,、,VscrollBar,),微软建议的水平滚动条的前缀是,hsb,,垂直滚动条的前缀是,vsb,。,(,1,)重要属性:,Value,:,返回,或,设置,滑块所处位置所代表的值。,Max,:,最大值,,默认,32767,Min,:,最小值,,默认,0,SmallChange,:,最小变动值,单击箭头时的改变量。,LargeChange,:,最大变动值,单击空白处的改变量。,(,2,)事件:,Change,、,Scroll,(拖动滚动条时并没有触发,Change,事件,只有当停止松开鼠标的那一时刻才触发,Change,事件),实例,5-9,设计一个设置颜色程序,拖动滚动条可以动态改变文本框里面文本的颜色。,33,5.5.1,定时器(,Timer,),时钟控件(,Timer,)能有规律地以,Interval,为时间间隔激发计时器事件,Timer,事件,从而执行相应的程序代码。微软建议的定时器名称前缀为,tmr,。,1,、属性,Interval,属性:时间间隔属性,它表示两个计时器事件之间的时间间隔。单位:,ms,,范围,0 65535ms,。,500,是半秒,,1000,是,1,秒。,Interval,0,:计时器失效。,Enabled,属性:,True,,启动计时;,False,,停止计时,2,、事件:,时钟控件只有一个,Timer,事件。时钟每隔,Interval,时间就会自动触发一次,Timer,事件。,实例,5-11,设计一个秒表计时程序。,实例,5-12,设计一个字幕滚动程序,程序运行后,标签从左到右移动,移出窗体右边界后重新从窗体的左边进入(尾部先进入)。,36,5.6.1,控件数组,控件数组的概念,一组相同类型的控件组成。它们共,用一个控件名,(,Name,),建立时系统给每个元素赋一个唯一的,索引号,(Index),。,控件数组,共享同样的事件过程,,只有通过索引号,加以区分。,a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8),注意添加控件数组的方法,实例,5-14,运用滚动条数组设计一个调色板程序,38,5.6.2,键盘和鼠标,本节要求,:,1.,理解鼠标、键盘事件的触发机制。,2.,掌握鼠标的,MouseDown,,,MouseMove,,,MouseUp,事件中各参数的含义及编程控制。,3.,掌握键盘的,KeyDown,,,KeyPress,,,KeyUp,事件中各参数的含义及编程控制。,39,5.6.2.1,鼠标器事件,Click,事件:当,鼠标单击对象时发生,DblClick,事件:当,鼠标双击对象时发生,最常用的鼠标事件:,40,大多数控件能够识别鼠标的,MouseMove,、,MouseDown,和,MouseUp,事件,通过响应这些鼠标事件,能在应用程序,对鼠标位置及状态的变化作出响应操作。,MouseMove,当鼠标移动时发生,MouseDown,按下鼠标键时发生,MouseUp,释放鼠标键时发生,5.6.2.1,鼠标器事件,一个,Click,动作 一个,MouseDown,动作 一个,MouseUp,动作,41,MouseMove,、,MouseDown,、,MouseUp,三个事件的过程的语法格式如下:,Sub Object_MouseMove,(,Button As Integer,,,Shift As Integer,,,X As Single,,,Y As Single,),Sub Object _MouseDown,(,Button As Integer,,,Shift As Integer,,,X As Single,,,Y As Single,),Sub Object _MouseUp,(,Button As Integer,,,Shift As Integer,,,X As Single,,,Y As Single,),其中:,1,Object,是可选的一个对象表达式,可以是窗体对象和大多数可视控件。,2,Button,参数是表示按下或松开鼠标哪个按钮。,5.6.2.1,鼠标器事件,42,参数,Button,值,参数(,Button,)值,说明,vbLeftButton 1,左按钮被按下,vbRightButton 2,右按钮被按下,vbMiddleButton 4,中间按钮被按下,Sub Object_MouseDown,(,Button,As Integer,,,Shift As Integer,,,X As Single,,,Y As Single,),5.6.2.1,鼠标器事件,43,Sub Object_MouseDown,(,Button As Integer,,,Shift,As Integer,,,X As Single,,,Y As Single,),5.6.2.1,鼠标器事件,参数,Shift,值,参数(,Shift,)值 描述,vbShiftMask 1SHIFT,键被按下,vbCtrlMask 2CTRL,键被按下,vbAltMask 4ALT,键被按下,通过,Shift,参数表示在,Button,参数指定的按钮被按下或 者被松开时键盘的,Shift,、,Ctrl,和,Alt,键的状态,。,44,Ctrl,、,Shift,、,Alt,三键组合使用情况如:,5.6.2.1,鼠标器事件,45,参数,X,、,Y,:,鼠标指针当前的位置。,5.6.2.1,鼠标器事件,Sub Object_MouseDown,(,Button As Integer,,,Shift As Integer,,,X,As Single,,,Y,As Single,),46,例:,编制事件过程,Form_MouseMove,,使得当鼠标在窗体上移动时的坐标值能够实时通过标签控件,Label1,、,Label2,显示。,5.6.2.1,鼠标器事件,47,5.6.2.2,键盘事件,在,Visual Basic,中,提供,KeyPress,、,KeyDown,、,KeyUp,三种键盘事件,窗体和接受键盘输入的控件都识别这三种事件。,KeyPress,事件,:当,按下具有,ASCII,码,的键时触发,如,Enter,、,Tab,、,BackSpace,及键盘上的字母、数字、标点符号等键,方向键,,F1-F12,等键是没有,ASCII,码的。,KeyDown,事件,:当,按下键盘的任意键时触发。,KeyUp,:当,释放键盘的任意键时触发。,48,5.6.2.2,键盘事件,KeyPress,事件过程的语法格式是:,Sub Object_KeyPress(KeyAscii As Integer),其中,,Object,是指窗体或控件对象名,,KeyAscii,参数返回对应于,ASCII,代码的整型数值。,Private Sub Text1_KeyPress(KeyAscii As Integer),If KeyAscii 48 And KeyAscii 57 Then,Print,欢迎光临,End If,End Sub,49,5.6.2.2,键盘事件,例:,在文本框里禁止输入非数字字符,Private Sub Text1_KeyPress(KeyAscii As Integer),If KeyAscii57 Then KeyAscii=0,End Sub,例:,一个文本框输入小写字母,在另一文本框里转为大写字 母:,Private Sub Text1_KeyPress(KeyAscii As Integer),Text2.Text=Text2.Text&UCase(Chr(KeyAscii),End Sub,50,KeyDown,和,KeyUp,事件过程的语法格式如下:,Sub Object_KeyDown(KeyCode As Integer,Shift As Integer),Sub Object_KeyUp(KeyCode As Integer,Shift As Integer),5.6.2.2,键盘事件,说明:,Keycode,参数,代表键盘扫描码;,Shift,参数代表,Shift,、,Ctrl,和,Alt,键的状态,。,51,5.6.2.2,键盘事件,Private Sub Text1_KeyDown(KeyCode As Integer,_ Shift As Integer),If KeyCode=&H41 Then,MsgBox,欢迎光临,End If,End Sub,例:,无论输入是大写的,A,,还是小写的,a,,都输出“欢迎光临”。,52,Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer),Select Case Shift,Case 1,Label1.Caption=you press the SHIFT key.,Case 2,Label1.Caption=you press the CTRL key.,Case 4,Label1.Caption=you press the ALT key.,Case 3,Label1.Caption=you press the SHIFT and CTRL key.,Case 5,Label1.Caption=you press the ALT and SHIFT key.“,Case 6,Label1.Caption=you press the ALT and CTRL key.,Case 7,Label1.Caption=you press both SHIFT,ALT and CTRL key.,End Select,End Sub,5.6.2.2,键盘事件,53,5.6.2.3,控件焦点,焦点是接收用户鼠标或键盘输入操作的当前状态。只有具有焦点的应用程序才有活动标题栏,才能接受用户输入。,Private Sub Command1_Click(),Form2.Show,End Sub,在窗口上有多个控件时焦点的变化。,54,5.6.2.3,焦点事件,当控件对象得到焦点时,会触发,GotFocus,事件。,当控件对象失去焦点时,会触发,LostFocus,事件。,Private Sub Text1_GotFocus(),Text1.BackColor=RGB(255,0,0),Text2.BackColor=RGB(0,0,255),Label1.Caption=,窗口,1,获得焦点,End Sub,Private Sub Text1_LostFocus(),Text1.BackColor=RGB(0,0,255),Text2.BackColor=RGB(255,0,0),Label1.Caption=,窗口,1,失去焦点,End Sub,55,5.6.2.3,设置焦点,在一个控件对象上设置焦点的方法是,SetFocus,Private Sub Command2_Click(),Text2.SetFocus,Command1.SetFocus,End Sub,Private Sub Form_Load(),Text1.SetFocus,End Sub,注意:,怎么在在,Form_Load(),事件里是对控件设置焦点的。,56,5.6.2.3 TabIndex,属性,TabIndex,属性的功能是设置或返回控件的,Tab,键顺序,,也就是控制焦点在各个控件上的转移顺序。,按键盘上的,Tab,键,可以使焦点在各个控件间转移。,默认情况下,焦点按照控件在窗口上的生成顺序移动,,第一个获得焦点的控件,其,TabIndex,值为,0,,第二个控件为,1,,依次类推。,Private Sub Form_Load(),Command2.TabIndex=0,Command1.TabIndex=1,Command3.TabIndex=2,End Sub,5.7,常见错误及其处理,程序的错误主要分为三种:,1,、语法错误:,类似错误如:,Label1.Fontcolor=vbred,Label1.move,label1.top+100,Label1.setfocus,2,、实时错误(有可能是隐形的语法错误),如除,0,操作,Private sub form_load(),Text1.setfocus,End sub,3,、逻辑错误,如加法运算写成乘法运算,Private sub command1_click(),For i=0 to 2,List1.removeitem I,Next,End sub,学会简单的调试方法,
展开阅读全文