3. 按钮类组件
21)问:在进行Windows程序界面设计中,经常会用到按钮,在C++Builder中,按钮一定是通过按钮组件来实现的吗?
答:是的,并且C++Builder的按钮类组件十分丰富。BCB提供了两类按钮类组件:一类是执行类按钮,另一类是信息类按钮。所谓执行类按钮是指它们通常用来启动程序运行的,比如按钮、位图按钮、加速按钮。而信息类按钮一般用来获取信息,包括单选按钮和复选框。灵活地使用各种按钮,不仅可以使程序更加丰富多彩,而且可以提高程序的性能。
22)问:那么按钮组件有哪些常用的属性和方法呢?
答:对于按钮组件,Caption属性用来描述按钮的标题,也就是按钮上显示的文本,它与标签组件很相识,我们同样可以在这个属性中为按钮指定快捷键。
当Cancel属性值为True时,用户无论何时按下Esc键,都会产生OnClick事件,当窗体上有多个按钮时,Esc键触发TabOrder值最小的那个按钮的OnClick事件。它的缺省值为False
当Default属性值为true时,用户无论何时按下Enter键时,都会产生OnClick事件,与Cancel属性不同的是,如果输入焦点正好在一个按钮上,那么会产生这个按钮的OnClick事件。否则,产生TabOrder的值最小的那个按钮的OnClick事件。它的缺省值为True
Hint属性保存着按钮的提示内容,当用户把鼠标光标停留在按钮上时,就会显示提示信息。
ShowHint属性用来确定是否显示提示文本,缺省值为False。
按钮常用的事件就是OnClick事件,OnClick事件在鼠标单击按钮时产生,另外,通过快捷键、enter键和Esc键也可以产生OnClick事件,一般情况下,按钮都需要增加OnClick事件处理程序。
23)问:那么位图按钮又有什么特点呢?
答:位图按钮BitBtn除了可以像普通按钮那样显示文本外,还可以显示图形,除了具有一般按钮所具有的全部属性外,位图按钮还有一个特有的Kind属性。这个属性用来设定按钮为几种预定义图形按钮风格中的哪一种。这是几种预定义按钮风格。这些做好的按钮如下表:
Kind属性值 |
按钮外观 |
等价属性设置 |
bkCustom |
缺省值 用来给用户制定 | |
bkOK |
Caption=”OK” ModalResult=mrOK Default=true | |
bkCancel |
Caption=”Cancel” ModalResult=mrCancel Cancel=true | |
bkYes |
Caption=”&Yes” ModalResult=mrYes Default=true | |
bkNo |
Caption=”&No” ModalResult=mrNo Cancel=true | |
bkHelp |
Caption=”&Help” | |
bkClose |
Caption=”&Close” | |
bkAbort |
Caption=”Abort” ModalResult=mrAbort | |
bkRetry |
Caption=”&Retry” ModalResult=mrRetry | |
bkIgnore |
Caption=”&Ignore” ModalResult=mrIgnore | |
bkAll |
Caption=”&All” ModalResult=mrAll |
当把Kind的属性值设置为bkCustom时,还可以给位图按钮指定其他的图形,具体的方法是,在对象编辑器中选择Glyph属性,然后单击Value列中的省略号按钮,这时会出现一个图形编辑对话框,要求指定位图的位置。
单击Load按钮,在文件打开对话框中选择一个位图文件就可以了。要注意的是,如果选择的位图太大,位图按钮不会自动调整其尺寸,这时你只能看到一部分的图形。
27)问:如果我想在窗体上放置不止一组按钮,应该怎么办?
答:可以用两种方法。一种是使用组合框(GroupBox),另一种是使用单选按钮分组框(RadioGroup)。
组合框顾名思义就是用来把许多组件组合起来,使窗口变得整齐而有条理,每一组不同的按钮使用一个组合框。在设计时,首先把组合框放在窗体上,然后再把单选按钮放在分组框上。要记住的是,放置次序不能颠倒。一旦把单选按钮放在分组框中,那么这个单选按钮就属于这个组合框了,你无法把它从组合框中移走,如果删除组合框的话,分组框中所有的单选按钮也会被同时删除。
在实际应用中,我们经常使用单选按钮分组框而不是单选按钮。因为单选按钮分组框可以包含多个单选按钮,而它实际上只是一个组件。这比使用分组框和多个单选按钮更直观和简单。
28)问:单选按钮分组框又有哪些特殊的属性呢?
答: 单选按钮分组框有三个属性是比较特殊的:
属性Items是类TStrings的一个对象,这一点与Memo组件中的Lines属性很相似,但是它们的含义不同,Lines属性包含Memo组件中显示的每一行字符串,而Items属性虽然也包含许多字符串,但是每一个字符串代表单选按钮组中的一个单选按钮。
单击Items属性Value列中的省略号按钮,可以打开一个字符串编辑器,然后在这个编辑器中可以输入单选按钮的标题。每个单选按钮占用一行。
Columns属性决定着单选按钮分组框内分栏的数目,默认是1,最多可以有16栏,即16列。
ItemIndex属性为单选分组框中被选中项的序号。-1表示不指向任何一个项。
29)问:复选按钮(CheckBox)有什么作用?
答:复选按钮与单选按钮不同,你可以一次选择多个复选按钮。复选按钮有几个比较重要的属性。
Alignment属性控制复选框标题的位置。
taRightJustify
标题出现在复选框的右边
taLeftJustify
标题出现在复选框的左边
缺省值为taRightJustify。
AllowGrayed属性决定复选框是否可以处于灰色的状态,当属性值为True时,复选框有三种状态,选中、未选中、和灰色;当属性值为False时,复选框只有两种状态。缺省值为false。
Checked属性确定复选框是否被选中。缺省值为false。
要知道复选框是选中状态、未选中状态还是灰色状态。,可以在运行的时候,用程序读取运行时态变量State的值,缺省值为cbUnChecked。
虽然复选框之间并不互相排斥,也就是说,直接放置在窗体上的每一个复选按钮相互之间都不干扰,但是最好还是把复选框分组使用。这样做的好处是便于用户理解。
30)问: CheckBox、RadioButton如何完成动态改变其按钮的标题? RadioGroup能动态添加吧?读取上面三个组件标题又如何做呢?
答:CheckBox、RadioButton的属性里有一个Caption,它的属性值就是按钮的标题,所以应该说对这两个组件来说很容易做到的:
CheckBox1->Caption=”信息”;
Label1->Caption= CheckBox1->Caption;
RadioButton与CheckBox一样,这里就不多说了。
而RadioGroup里面有一个Items属性,这在《闲谈BCB》中说过这个问题,所以你要添加按钮,可以用下面的方法:
RadioGroup1->Items->Add(“我是新来的”);
读取可以利用ItemsIndex来完成:
Label1->Caption=RadioGroup1->Items->Strings[RadioGroup1->ItemIndex];
String是把选中的序号转换成你需要的文本,因为Items是Tstring对象,这类情况在你以后的学习中会经常看到的。
要注意在RadioGroup中也有一个Caption,这是用来给单选分组框设置标题的,这个标题与单选的文字无关。
ASP编码教程:如何实现/使用缓存
[ASP]2015年4月15日ASP编码教程:asp缓存的分类
[ASP]2015年4月15日ASP编码教程:何谓ASP缓存/为什么要缓存
[ASP]2015年4月15日ASP编码教程:asp实现的sha1加密解密代码
[ASP]2015年4月15日ASP编码教程:asp执行带参数的sql语句实例
[ASP]2015年4月14日