C++ Builder 初学问与答(三)

LES交友1314

LES交友1314

2016-02-19 20:22

今天给大家分享的是由图老师小编精心为您推荐的C++ Builder 初学问与答(三),喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!
3. 按钮类组件
  
  21)问:在进行Windows程序界面设计中,经常会用到按钮,在C++Builder中,按钮一定是通过按钮组件来实现的吗? !-- frame contents -- !-- /frame contents --
  
  答:是的,并且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?XML:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />缺省值用来给用户制定bkOKCaption=”OK”ModalResult=mrOKDefault=truebkCancelCaption=”Cancel”ModalResult=mrCancelCancel=truebkYesCaption=”&Yes”ModalResult=mrYesDefault=truebkNoCaption=”&No”ModalResult=mrNoCancel=truebkHelpCaption=”&Help”bkCloseCaption=”&Close”bkAbortCaption=”Abort”ModalResult=mrAbortbkRetryCaption=”&Retry”ModalResult=mrRetrybkIgnoreCaption=”&Ignore”ModalResult=mrIgnorebkAllCaption=”&All”ModalResult=mrAll
  
      更多内容请看C/C++技术专题专题,或
  当把Kind的属性值设置为bkCustom时,还可以给位图按钮指定其他的图形,具体的方法是,在对象编辑器中选择Glyph属性,然后单击Value列中的省略号按钮,这时会出现一个图形编辑对话框,要求指定位图的位置。
  
   !-- frame contents -- !-- /frame contents --   单击Load按钮,在文件打开对话框中选择一个位图文件就可以了。要注重的是,假如选择的位图太大,位图按钮不会自动调整其尺寸,这时你只能看到一部分的图形。
  
  24)问:位图按钮组件的NumGlyph属性有什么作用?
  
  答:属性NumGlyph指出位图按钮使用的位图的数目,当你需要位图按钮使用多个位图分别表示按下,弹起等不同状态时,必须保证这些位图具有相同的尺寸,并且一个接着一个地水平排列着。
  
  在C++Builder中,一个位图按钮最多可有四个位图,因此,NumGraph地取值范围只能是1到4,C++Builder将根据位图按钮地状态确定显示哪个位图。
  
  一般来说,当按钮未选中时显示第一个位图。
  
  当按钮不能选择时,显示第二个位图,
  
  当按钮被单击时显示第三个位图,
  
  当用户释放鼠标键时,又会重新显示第一个位图,
  
  当没有希望的位图时,那么所有地状态都使用第一个位图。
  
  25)问:快捷按钮有哪几个重要属性?
  
  答:快捷按钮与位图按钮很相似,也可以显示图像,但也有一些不同之处:快捷按钮一般都比较小,缺省大小25*25,基本上都是只显示图像而不显示文字,最大差别是,快捷可以保持在按下的状态,而其它两类按钮不能。快捷按钮一般都是用来制作工具栏按钮,这时要和Panel配合使用。下面来看一下它的重要属性:
  
  AllowAllUp:设置一个组的快捷按钮是否可以全部处于弹起的状态。缺省为false,这时可以用来模拟单选按钮,让同一个组的总有一个按钮处在按下状态。假如一个组中只有一个快捷按钮,把这个属性改为true,这时这个按钮就可以在按下和弹起两个状态之间切换,可以用来模拟一个复选按钮。
  
  Down:表示按钮是否按下,若设为true,则处于按下的状态。
  
  GroupIndex:用来把几个这个属性相同的快捷按钮编为一组,即相同取值的按钮为一组。缺省为0,表示这个按钮不编成组。
  
  26)问:那么单选按钮又有什么特点呢?
  
  答:单选按钮RadioButton是相互排斥的一种选择组件,在一组单选按钮中用户一次只能选取一个单选按钮。
  
  虽然你可以只使用一个单选按钮,但是那样单选按钮也就失去了意义。单选按钮一般都是成组出现的。
  
  单选按钮只有一个比较非凡的属性Checked,它表示按钮是否被选中。缺省情况下,Checked的属性是False,表示按钮未选中。
  
  另外单选按钮也具备Caption属性,这就意味着它也可以通过快捷键来选中。
  
  单选按钮在成组使用时有一些特点需要把握。当你在同一容器(如:Form、Panel、GroupBox等)上直接放置单选按钮时,这些单选按钮自成一组,也就是说,无论在容器上放置2个或者几十个单选按钮,它们都是一组的,每次只能选中它们中的某一个。   更多内容请看C/C++技术专题专题,或
  
  27)问:假如我想在窗体上放置不止一组按钮,应该怎么办?
  
  答:可以用两种方法。一种是使用组合框(GroupBox),另一种是使用单选按钮分组框(RadioGroup)。
  
   !-- frame contents -- !-- /frame contents --   组合框顾名思义就是用来把许多组件组合起来,使窗口变得整洁而有条理,每一组不同的按钮使用一个组合框。在设计时,首先把组合框放在窗体上,然后再把单选按钮放在分组框上。要记住的是,放置次序不能颠倒。一旦把单选按钮放在分组框中,那么这个单选按钮就属于这个组合框了,你无法把它从组合框中移走,假如删除组合框的话,分组框中所有的单选按钮也会被同时删除。
  
  在实际应用中,我们经常使用单选按钮分组框而不是单选按钮。因为单选按钮分组框可以包含多个单选按钮,而它实际上只是一个组件。这比使用分组框和多个单选按钮更直观和简单。
  
  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。   更多内容请看C/C++技术专题专题,或
  
  要知道复选框是选中状态、未选中状态还是灰色状态。,可以在运行的时候,用程序读取运行时态变量State的值,缺省值为cbUnChecked。
  
   !-- frame contents -- !-- /frame contents --   虽然复选框之间并不互相排斥,也就是说,直接放置在窗体上的每一个复选按钮相互之间都不干扰,但是最好还是把复选框分组使用。这样做的好处是便于用户理解。
  
  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,这是用来给单选分组框设置标题的,这个标题与单选的文字无关。
  
  (待续)   更多内容请看C/C++技术专题专题,或
展开更多 50%)
分享

猜你喜欢

C++ Builder 初学问与答(三)

编程语言 网络编程
C++ Builder 初学问与答(三)

C++ Builder初学问与答5

编程语言 网络编程
C++ Builder初学问与答5

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

C++ Builder 初学问与答(十五)

编程语言 网络编程
C++ Builder 初学问与答(十五)

C++ Builder 初学问与答(十二)

编程语言 网络编程
C++ Builder 初学问与答(十二)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

C++ Builder初学问与答(十四)

编程语言 网络编程
C++ Builder初学问与答(十四)

C++ Builder初学问与答12

编程语言 网络编程
C++ Builder初学问与答12

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

怎么打开dll dll格式文件的功能

怎么打开dll dll格式文件的功能

插入排序法

插入排序法
下拉加载更多内容 ↓