第五章 基本控件的使用.docx
《第五章 基本控件的使用.docx》由会员分享,可在线阅读,更多相关《第五章 基本控件的使用.docx(56页珍藏版)》请在冰豆网上搜索。
第五章基本控件的使用
第五章基本控件的使用
标签控件
在Windows应用程序的各种对话框中,都显示有一些文本提示信息,在VB中可以使用标签控件来实现在窗体中显示这些文本提示信息。
表5.1中列出了标签控件的一些主要属性。
既可以在程序设计阶段通过【属性】窗口设置标签的属性,也可以在程序运行阶段在代码中设置窗体的属性。
如将标签(名称为Labell)显示的文本设置为"欢迎"的语句如下:
Labell.Caption=欢迎
实例5.1标签的使用
在该程序中,窗体上显示一行提示用户执行操作的文本,当用户单击或双击窗体时,窗体上还会显示出用户所执行的操作。
在窗体上放置两个标签控件,它们的属性设置如表5.2所示。
打开【代码】窗口,将下列代码添加到Form_Click事件过程中:
PrivateSubForm_Click()
Labl.Borderstyle=0
Labl.Caption=“您单击了窗体!
”
EndSub
当单击窗体时,则触发Form_Click事件,该事件中的第一行语句是设置标签无边框(BorderStyle属性的值为0),第二行语句是设置标签上显示的文本。
与此类似,将下列代码添加到Form_DblClick事件过程中:
PrivateSubForm_Click()
Labl.Borderstyle=1
Labl.Caption=“您单击了窗体!
”
EndSub
运行该程序,单击窗体,则窗体上显示"您单击了窗体!
",如图5.2所示。
双击窗体,则窗体上显示"您双击了窗体!
",并且文本有一个边框,如图5.3所示:
按钮控件
在应用程序中,按钮控件常常被用来启动、中断或结束一个进程,用户可以通过简单的单击按钮来执行操作。
只要用户单击按钮,就会触发它的Click事件过程,通过编写按钮的Click事件过程,就可以指定它的功能了。
按钮控件的常用属性如表5.3所示。
按钮的有效性
在某些应用程序界面中,按钮会根据用户的操作情况呈现两种不同的状态,一种是"有效",一种是"无效".在"无效"状态时,按钮通常以浅灰色显示,不能响应用户的任何操作。
Windows系统自带的录音机程序界面,其中的【停止】与【后退】按钮无效(以浅灰色显示).按下【播放】按钮后,【播放】按钮变为无效,而【停止】按钮变为有效。
按下【停止】按钮后,【停止】按钮变为无效,【播放】按钮恢复有效。
通过按钮的有效性可以看出当前程序的状态,从而避免一些不需要的或重复的操作。
如在录音机处于停止状态时(【停止】按钮无效),用户就不需要再去单击【停止】按钮来停止播放了。
这里给出一个实例,来模拟录音机的停止与播放按钮。
实例5.2按钮的有效性
在窗体中放置一个标签控件和两个按钮控件,如图5.5所示,其中各控件的属性设置如表5.4所示。
注意:
按钮控件添加到窗体上后,在默认情况下,它们的Enabled属性为Ture,在运行程序前,请在【属性】窗口中确认两个按钮的Enabled属性均为Ture,以防止用户在操作中谋改变了这个属性。
双击第一个按钮,打开【代码】窗口,将下列代码添加到ComPlay_Click事件过程中:
PrivateSubComPlay_Click()
Labell.Caption="正在播放歌曲"
Complay.Enabled=False
ComStop.Enabled=Ture
EndSub
当用户单击【播放】按钮时,触发ComPlay_Click事件,该事件过程中的第一行代码是在标签中显示文本,第二行代码是将【播放】按钮变为无效,第三行代码是将【停止】按钮变为有效。
与此类似,将下列代码添加到Comstop_Click事件过程中:
PrivateSubComstop_Click()
Labell.Caption="歌曲播放停止"
ComPlay.Enabled=Fasle
ComPlay.Enabled=Ture
EndSub
运行该程序,单击【播放】按钮,则在标签中显示"正在播放歌曲",并且【播放】按钮变为无效,如图5.6所示。
单击【停止】按钮,则在标签中显示"歌曲播放停止",【停止】按钮变为无效,同时,【播放】按钮又恢复有效,如图。
5.7所示。
多功能按钮
通常,每个按钮都有一个固定的标题(Caption)和一个特定的功能,用户也可以设计出多功能按钮。
单击这样的按钮,按钮的名称会发生变化,并且会执行与按钮标题相应的操作。
实例5.3多功能按钮。
在该程序中,窗体上只有一个按钮,单击该按钮,按钮的标题会在"显示日期"与"显示时间"间切换,并且在窗体中将显示出与当前按钮标题相应的内容。
在窗体上放置一个标签控件和一个按钮控件,其中各对象的属性设置如表5.5所示。
双击【显示日期】按钮,打开【代码】窗口,将下列代码添加到Commandl_Click事件过程中:
PrivateSubCommand1_Click()
IfCommandl.Caption-“显示日期”Then
Labell.Caption=Date
Command1.Caption=“显示时间”
Else
Labell.Caption=Time
Command1.Caption=“显示日期”
Endif
EndSub
在该段代码中,使用了一个If语句来判断当前按钮的标题,然后做出相应的操作。
运行该程序,单击【显示日期】按钮,则在标签中显示当前的系统日期,并将按钮的标题改变为"显示时间",如图5.9所示;再次单击按钮。
则在标签中显示当前的系统时间,并且按钮的标题恢复为"显示日期",如图5.10所示。
这样,通过一个按钮就可以循环显示当前系统的时间与日期了。
使用键盘操作按钮
按钮控件的Click事件不仅可以由鼠标单击触发,还可以由以下几种方法触发:
按Tab键把焦点移到相应按钮上。
然后按Space键或Enter键。
如果某按钮是窗体的缺省命令按钮,既使将焦点移到其他控件上(非按钮控件),按下Enter键也会选中该按钮。
在设计时,通过设置按钮的Default属性为True,就可指定它为窗体的缺省命令按钮。
在一个窗体中只能有一个按钮为缺省命令按钮。
如果某按钮是窗体的缺省取消按钮,即使把焦点移到其他控件上,也能通过按Esc键选中该按钮。
在设计时,通过设置某按钮的Cancel属性为True,就可指定它为窗体的缺省取消按钮。
在一个窗体中只能有一个按钮为缺省取消按钮。
按按钮的访问键(Alt+带下划线的字母)
可通过Caption属性创建命令按钮的访问键,为此,只需在作为访问键的字母前添加一个连字符(&).例如,要为标题为Print的按钮创建访问键,应在字母P前添加连字符(&),于是得到&Print.运行时,字母P将带下划线,同时按AIt+P键就可选定命令按钮。
注意:
如果不创建访问健,而又要使标题中包含连字符但不创建访问键,应添加两个连字符(&&).这样一来,在标题中就只显示一个连字符而不显示下划线。
使用Enter键来执行某项操作和使用Esc键来取消某项操作是人们的操作习惯,因此,在设计程序时,最好设置窗体的缺省命令按钮和缺省取消按钮,来迎合人们的操作习惯。
实例5.4使用键盘操作按钮
在该程序中,用户可以使用Enter键,Esc键和访问键来选中按钮。
若按Esc键,则退出程序。
在窗体中放置一个标签控件、一个文本框控件和两个按钮控件,其中各对象的属性设置如表5.6所示。
双击【确定】按钮,打开【代码】窗口,将下列代码添加到ComOK_Click事件过程中:
TexTime.Text=Time
EndSub
将退出程序的end语句添加到ComEsces_Click事件过程中:
PrivateSubComEsc_Click()
End
EndSub
运行该程序,单击【确定】按钮或按下Alt+O组合键都将在文本框中显示当前的时间。
将焦点移动到文本框上,按下Enter键也可以在文本框中显示当前的时间。
单击【取消】按钮、按下Esc键或按下Alt+E组合键将退出程序。
图片按钮
在Windows程序界面中,标准的按钮形式是立体的长方形,在其上显示文本提示信息,表明按钮的功能。
为了使用户界面更加生动,一些按钮上不是用文字,而是用图片来表明按钮的功能,如按钮的功能是保存,则在按钮上显示一个磁盘图片。
在VB中,如果将按钮控件的Style属性的值设置为1,就可以通过Picture属性来设置要在按钮上显示的图片,通过DownPicture属性设置按钮被按下时显示的图片,通过DisablePicture属性设置按钮无效时显示的图片。
实例5.5图片按钮。
在该程序中,按钮上显示有图片,形象地说明了该按钮的功能。
并且,按钮上的图片还会根据用户的操作,做出相应的变化。
在窗体上放置一个标签控件和两个按钮控件,如图5.13所示,其中各对象的属性设置如表5.7所示。
提示:
在安装VB时,如呆选择了安装图形选项,则在VB安装目录下的\Common\Graphics目录将有大量的位图文件、元文件以及图标文件等。
在需安各种图形或图标时,可以在那里找到。
双击第一个按钮控件,打开【代码】窗口,将下列代码添加到ComLight_Click事件过程中:
PrivateSubComLight_Click()
IfComLight.Caption=“关灯”Then
ComLight.Picture=LoadPicture(“d:
Microsoftvisualstudio\Common\Graphices\Tcons\Misc\Lighton.ico“
ComFace.picture=Loadpicture(“d:
Microsoftvisualstudio\Common\Graphices\Tcons\Misc\Face04.ico“
ComLight.Caption=“开灯”
Else
ComLiht.Picture=LoadPicture((“d:
Microsoftvisualstudio\Common\Graphices\Tcons\Misc\Lightoff.ico“)
ComFace.picture=Loadpicture(“d:
Microsoftvisualstudio\Common\Graphices\Tcons\Misc\Face02.ico“)
ComLight.Caption=“关灯”
EndIf
EndSub
【关灯】按钮是一个多功能按钮,与实例5.3一样,使用了If语句来判断按钮当前的标题。
在程序运行时,设置对象的Picture属性的格式如下:
对象名Picture=LoadPicture("文件名")
注意:
在程序运行时,不能直接将文件名赋予控件的Picture属性,而要使用LoadPicture()函数。
将下列代码添加到ComFace_Click事件过程中:
PrivateSubComFace_Click()
IfComLight.Caption=“关灯”Then
Labell.Caption=“我高兴!
”
Else
Labell.Caption=“我生气!
”
EndIf
EndSub
运行该程序,单击【关灯】按钮,则该按钮上的图片变成一个发亮的灯泡,提示文本也由"关灯"变成了"开灯",且另一个按钮上的笑脸图片变成了哭脸图片。
单击【哭脸】按钮,则在标签中显示"我生气!
",如图5.14所示。
再次单击【开灯】按钮,则该按钮'上的图片恢复为一个关灭的灯泡,提示文本"开灯"变成了"关灯",且另一个按钮上的哭脸图片恢复为笑脸图片。
单击【笑脸】按钮,则在标签中显示"我高兴!
",如图5.15所示。
文本框的基本属性
在前面的一些实例中,己经接触过文本框的Text属性。
该属性是文本框最重要的一个属性,在设计时,使用该属性可以指定文本框的初始值。
在程序中。
Text属性用来返回用户在文本框中输入的内容。
如要将用户在文本框(名称为Text1)中输入的内容显示在窗体上,可以使用以下语句:
PrintTextl.Text
表5.8列出了文本框的其他一些属性。
如果文本框的MultiLine属性的值设置为False,则这样的文本框称为单行文本框。
在单行文本框中输入的内容均处于一行,即便是按Enter键也不能实现换行。
超出文本框的内容不显示出来,可以将插入点置于文本框中,然后按方向键来查看未显示出的内容。
如果文本框的MultiLine属性的值设置为True,则这样的文本框称为多行文本框。
对于多行文本框,如果ScrollBars属性使用默认值(值为0),则在文本框中输入内容时,当一行填满之后,就会自动转换到下一行,也可以按Enter键强制换行。
将插入点置于文本框中,然后按方向键即可查看超出文本框中的内容。
如果Scro1LBars属性的值不为0,则文本框中会出现滚动条,通过滚动条可以方便地查看超出文本框的内容。
图5.16所示的是在几个MultiLiue属性和Scro1lBars属性设置不同的文本框中输入相同的内容后的情形,其中各文本框的MultiLine属性和ScrollBars属性的设置如表5.10所示。
文本框的基本属性
在前面的一些实例中,己经接触过文本框的Text属性。
该属性是文本框最重要的一个属性,在设计时,使用该属性可以指定文本框的初始值。
在程序中。
Text属性用来返回用户在文本框中输入的内容。
如要将用户在文本框(名称为Text1)中输入的内容显示在窗体上,可以使用以下语句:
PrintTextl.Text
表5.8列出了文本框的其他一些属性。
如果文本框的MultiLine属性的值设置为False,则这样的文本框称为单行文本框。
在单行文本框中输入的内容均处于一行,即便是按Enter键也不能实现换行。
超出文本框的内容不显示出来,可以将插入点置于文本框中,然后按方向键来查看未显示出的内容。
如果文本框的MultiLine属性的值设置为True,则这样的文本框称为多行文本框。
对于多行文本框,如果ScrollBars属性使用默认值(值为0),则在文本框中输入内容时,当一行填满之后,就会自动转换到下一行,也可以按Enter键强制换行。
将插入点置于文本框中,然后按方向键即可查看超出文本框中的内容。
如果Scro1LBars属性的值不为0,则文本框中会出现滚动条,通过滚动条可以方便地查看超出文本框的内容。
图5.16所示的是在几个MultiLiue属性和Scro1lBars属性设置不同的文本框中输入相同的内容后的情形,其中各文本框的MultiLine属性和ScrollBars属性的设置如表5.10所示。
字体与字号
大多数控件都有Font属性,用来设置显示在控件上文本的字体与字号。
通过【属性】窗口设置Font属性的方法是:
单击Font属性,则在属性行的右端会出现一个显示有"…"符号的按钮,单击该按钮则打开【字体】对话框。
在该对话框中选择一种需要的字体(如隶书)、样式(如规则)、字号(如小四)和效果(如下划线),单击【确定】按钮即可。
与其他属性不同,在代码中不能使用Font属性,如下列语句是错误的。
Text1.Font="宋体".
Textl.Font="宋体,四号".
事实上,在【属性】窗口中通过设置Font属性同时也设置了多项属性,如字体、字号和效果等。
而在代码中,每一个属性都对应一个属性名,如字体的属性名为FontName.表5.11中列出了在代码中设置字体、字号、黑体和下划线等属性的属性名以及示例。
选择文本
文本框控件还提供了3个属性,用于操作用户所选择的文本。
且这3个属性不能在【属性】窗口中设置,只能在代码中使用。
表5.12中列出这3个属性以及它们的含义。
要在程序中操作用户所选的文本,如将文本替换成指定的文本以及更改所选文本的大小写等,都可以使用SelText属性。
例如,将用户在文本框(Textl)中所选文本替换成3个A的语句如下:
Texil.SelText=""AAA'".
要删除当前所选的文本,只需向SelText属性赋予空字符串即可,语句如下:
Text1.Se1Text="".
将所选文本转换成大写,可以使用Ucase()函数,语句如下:
Textl_SelText=UCase(Textl.SelText).
实例5.6替换文本。
在该程序中,用户在一个文本框中输入一段文本,使用鼠标拖动选中要替换的字符串,则在窗体上显示出所选字符串的起始位置和字符串的长度。
在另一个文本框中输入替换内容后,单击【替换】按钮即可将所选的字符串替换,如图5.19所示,将用户所选的字符串替换成了"改变"两个字。
在窗体中放置五个标签控件、两个文本框控件和一个按钮控件,如图5.20所示。
其中各对象的属性设置如表5.13所示。
使用鼠标拖动选中文本框中的字符串后,释放鼠标,则窗体上就显示出所选字符串的信息。
因此,可以将显示所选字符串信息的代码添加到文本框的MouseUp事件中。
Texsel_MouseUp事件过程如下所示:
PrivateSubTextsel_MouseUp(ButtonAsInterger,ShiftAsInteger,xAsSingle,YAsSingle)
LabStart.Vaption=TextSel.SelStart
LabStart.Caption=TextSel.selLength
EndSub
在按钮的Click事件中添加如下代码:
PrivateSubComch_Click()
Text.SelText Texch.Text
EndSub
这样,一个替换文本程序就创建完毕。
密码框
密码框是一种特殊的文本框,它的特殊之处在于:
当用户向密码框中输入文本时,不论用户输入的是什么字符,在密码框中总是显示特定的字符。
如*、#等。
这样,别人在密码框中就看不到用户所输入的实际内容,从而达到了保密的效果。
通过设置文本框的PasswordChar属性就可以将普通的文本框设置成为密码框。
在缺省情况下,PasswordChar属性的值为空字符串。
这时用户在键盘上输入什么字符,在文本框中就显示什么字符。
如果将PasswordChar属性的值设置为某个字符,如设置为星号(*),则用户在文本框中输入任何字符都将显示为*.例如,输入的是Hcq,显示的则是***.
但是,文本框的PasswordChar属性并不影响Text属性,尽管在文本框中显示的是在PasswordChar属性中指定的字符,但Text属性返回的仍然是用户输入的实际内容。
根据这一点,可以编写一个验证密码的小程序。
实例5.7验证密码
在该程序中,要求用户输入密码,如果输入正确,则用户可以继续下一步操作,否则,在窗体上显示"密码输入错误,请再试一次!
",并且用户只有三次输入密码的机会,如果三次输入错误,则文本框变为无效,不能接受用户的任何输入。
在本例中,认为正确的密码为abcd.
单击【添加窗体】按钮向当前工程中再添加一个窗体,其中一个窗体用作验证密码。
在用作验证密码的窗体上放置两个标签控件、一个文本框控件和一个按钮控件,如图5.21所示。
各对象属性设置如表5.14所示。
在另一个窗体上放置一个标签控件和一个按钮控样,如图5.22所示,各对象的属性如表5.15所示。
双击验证密码窗体中的【确定】按钮,打开【代码】窗口,将下列代码添加到ComOk_Click事件过程中:
PrivateSubComOK_Click()
StaticiAsInteger
Ifi<=2Then
IfTexPass.Text=“abcd”Then
UnloadForPass
Formain.Show
Else
LabMsg.Caption=“密码错误,请再试一遍!
”
EndIf
Else
LabMsg.Caption=“三次输入错误,拒绝重新输入!
”
TextPass.Enabled=False
EndIf
i=i+1
EndSub
在该段代码中,首先定义了一个静态变量i,它用来记录用户输入密码的次数。
i的初值为O,每单击一次按钮,则i的值增1(i=i+1).然后使用If语句来判断i的值,如果i的值小于3,即用户输入密码不超过三次,又使用了一个If语句来判断用户所输入的密码是否正确。
如果正确(即输入的是abcd),则验证密码窗体消失,同时启动另一个窗体。
如果输入的密码不正确,则会在窗体的标签上显示"密码错误,请再试一遍!
".如果第三次输入密码也不正确,此时i的值已经累加到3.再次输入密码,程序不会再判断密码是否正确(因为1≮3),而是在窗体上显示"三次输入错误,拒绝重新输入!
",并且将文本框置为无效。
因此,即便是用户在第四次输入了正确的密码,也无济于事。
双击另一个窗体上的按钮控件,将程序结束语句End添加到按钮的Click事件中,如下所示:
PrivateSubComMain_Click()
End
EndSub
在【工程属性】对话框中设置启动窗体为ForPass,运行该程序,则出现【验证密码】窗体,在文本框中输入字符串abcd,文本框中显示的是"****",如图5-23所示。
单击【确定】按钮,则验证密码窗体消失,另一个窗体显示出来,如图5.24所示。
单击【关闭】按钮可以退出该程序。
再次运行该程序,在【验证密码】窗体的文本框中随意输入一个字符串(不是abcd),单击【确定】按钮,则窗体上显示"密码错误,请再试一遍!
".如图5.25所示。
连续三次输入错误的密码,当第四次输入密码时,无论密码正确与否,单击【确定】按钮则窗体上显示"三次输入错误,拒绝重新输入!
",并且将文本框置为无效,用户无法继续输入密码,如图5.26所示。
Change事件
文本框也有Click,DblClick等事件,但文本框的这些事件并不常用。
文本框较常用的一个事件是Change事件,一旦文本框中的内容被改变,就会触发它的Change事件。
实例5.8利用Change事件
在该程序中,用户在文本框中输入内容时,窗体上就会同步显示出用户所输入的内容。
并且如果用户修改了文本框内容,则窗体上的内容也会同步修改。
要使窗体上显示的内容总是与文本框中的内容同步改变,需要使用文本框的Change事件,因为该事件能随时感知到文本框中内容的改变。
在窗体中放置一个标签控件、一个文本框控件和一个按钮控件,如图