正文

我学c++Builder系列(3)2007-06-25 14:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/goal00001111/27086.html

分享到:

  C++ Builder中构件的属性

1Align属性。

Align属性的取值

数值

说明

alBottom

构件与父窗口的底部对齐,例如状态条就与主窗口底部对齐alClient构件展开成填充父窗口客户区。如果客户区中有其它构件,则这构件填充客户区余下部分。例如Memo构件、Image构件和RichEdit构件

alLeft

构件与父窗口的左边对齐。例如垂直工具条就是个左对齐构件

alNone

构件按指定方法放置,与父窗口无特别关系,是大多数构件的缺省设置

alRight

构件与父窗口的右边对齐

alTop

构件与父窗口的顶边对齐,例如工具条就采用这种对齐方法

 

2Name属性。

将构件放在窗体上时,C++ Builder在后台工作。C++ Builder所做的工作之一是生成构件的指针和赋予Name属性为变量名。例如,假设将Edit构件放在窗体上,并将其Name属性变为MyEdit。则C++Builder会在窗体头文件中放上下列语句:TEdit* MyEdit;

C++ Builder在生成事件处理器名时也使用Name属性。假设要响应Edit构件的OnChange事件。通常,双击OnChange事件旁边的Value列,C++ Builder即会产生这个事件的事件处理器。C++ Builder根据构件的Name属性和所处理的事件生成缺省函数名。这里,C++ Builder生成函数MyEditChange()

Name属性可以随时改变,但只能通过对象观察器改变。设计时改变构件Name属性时,C++ Builder遍历前面生成的所有代码,改变指针名和所有事件处理函数名。换句话说,C++ Builder会负责修改所写的代码,但你自己所写的代码要你自己修改和维护。一般来说,开始将构件放在窗体上时应改变Name属性,此后则保持不动。

警告:不要在运行时改变Name属性名,别在代码编辑器中手工改变构件名(C++ Builder指定的构件指针名)和事件处理器名,否则C++ Builder无法跟踪这些构件,结果肯定不理想,甚至无法装入窗体。Name属性只能通过对象观察器改变。

建议:尽快将构件Name属性从缺省名变为有意义的名称;运行时不引用的构件可以保留C++ Builder提供的名称;别在类头文件中或运行时改变构件的Name属性;构件名称应有意义而又不宜太长,即要简单明了。

 

3Color属性。

Color属性设置构件的背景颜色(文本颜色用Font属性设置)。

对象观察器中处理Color属性的方法很独特。如果单击Value列,则会显示下拉箭头按钮,表示可以从一列颜色值中选择。如果双击Value列,则会出现Color对话框,从中可以选择预定义颜色或单击Define Custom Colors按钮生成自己的颜色。

如果从Color对话框中选择颜色,则可以看到Color属性值变成十六进制字串,这个字串表示颜色的红、绿、蓝(RGB)值。如果知道颜色的RGB值,则可以输入(通常不知道)。

更多的时候可能是在提供的颜色值清单中选择颜色。单击下拉按钮显示可能的取值时,可以看到两组数值。第一颜色以clBlack开始,以clWhite结束,这是C++ Builder预定义颜色,表示最常用的颜色。为了选择清单中的颜色。单击该颜色。如果找不到适合的颜色,则可以调用Color对话框。

第二组颜色以clScrollBar开始,这组颜色表示Windows系统颜色。如果使用这组颜色。则应用程序在用户改变Windows系统颜色时自动调整颜色。如果要让应用程序取用户系统所选的颜色,则应从第二组颜色中选择。

建议:用颜色表达基调和强调不用刺眼的颜色;应用程序中尽量采用系统颜色,以便在用户改变Windows系统颜色时自动调整;窗体间颜色用法应保持一致。

 

4Cursor属性。

Cursor属性控件用户在构件上移动鼠标光标时显示的光标。Windows自动改变某些构件的光标。例如,光标移到EditMemoRichEdit等构件上时,Windows自动改变光标为I形条。为了让Windows自动改变光标应将Cursor属性保持为crDefault。如果有专门窗口(构件),则可以指定其它光标。鼠标移到这个构件上时,Windows将光标变为指定的光标。

另一光标属性DragCursor控制鼠标移到支持拖放的构件上时的光标。和颜色一样,光标的使用也要慎重。需要时可以使用自定义光标,但不要滥用。

 

5Enabled属性。

构件可以通过Enabled属性启用或关掉。构件关掉时,不能接受焦点(单击无效),通常能直观地看出已经关掉。例如,按钮变灰,按钮中的位图变灰。Enabled属性是个布尔属性,设置为true启用构件,设置为false关掉构件。启用或关掉窗口构件是Windows本身的特性。

Enabled属性主要用于窗口化构件,但也可用于非窗口化构件。SpeadButton构件就是可以关掉的非窗口化构件。

说明:修改Panel构件的Enabled属性有另外的含义。面板通常是其它控件的容器,因此,是面板上其它构件的父对象。如果关掉面板,则面板上其它控件并不显示关掉状态,而是不起作用,因为父构件(面板)已经关掉。

尽管构件可以在设计时关掉,但启用和关掉构件通常在运行时进行。例如,菜单项目应根据具体情况启用和关掉,按钮也是这样。其它控件也可能因故需要关掉。为了在运行时关掉构件,只要将Enabled属性设置为false,而为了启用构件,只要将Enabled属性设置为true。下列码段根据条件启用和关掉构件:

if ( saveEnabled) FileSave->Enabled = true;else FileSave->Enabled=false;

这个过程称为命令启用,是专业化Windows程序的重要部分。

 

6Font属性

Color属性设置字体颜色,Name属性指定字体类型。TFont类的HeightSize属性需要稍作说明。Height属性指定字体高度(像素数),而Size属性指定字体高度(点数)。改变其中一个属性时,另一属性自动改变。Height常用于指定负数,具体原因见TFont的联机帮助。TFontStyle属性可以在黑体、斜体、下划线和划去线之间拔动。这些样式不是互斥的,可以混合使用。

提示:尽管可以用对象观察器改变字体属性,但Font对话框(单击Font属性旁边的省略号按钮可以调用)还能在选择不同字体选项时显示样本字体。为了改变字体的Style属性或Size属性,可以用对象观察器,而要寻找适当的字体时,则应该用Font对话框。

 

7Hint属性。

Hint属性用于设置构件的提示文本。提示文本分为两个部分,第一部分是短提示,是用户将光标放在构件上并暂停时显示的文本,显示提示的弹出窗口称为工具提示。

提示:文本的第二部分称为长提示,是用户将鼠标光标移到构件上时状态条中显示的提示文本。短提示和长提示之间用管道(|)分开。例如,为了指定File Open快速按钮的短提示和长提示,可以输入Hint属性如下:

File Open|Open a file for editing

为了显示短提示,应将应用程序对象的ShowHint属性设置为true(缺省值),并将构件的ShowHint属性设置为true。在状态条中显示长提示则要做更多工作,所以放到以后介绍。

说明:可以指定短提示、长提示或两者都定。可以用管道告诉C++ Builder提供的是哪个提示文本。如果不用管道,则短提示和长提示用同一文本。

 

8ParentColorParentCtl3DParentFontParentShowHint属性。

ParentColorParentCtl3DParentFontParentShowHint的用法相同,所以放在一起介绍。这些属性设置为true时,构件取父构件的ColorCtl3DFontShowHint设置。例如,对于大多数构件,ParentFont属性缺省设置为true,即构件继承父构件当前所用的字体。试举例说明如下:

1.       生成空白窗体,将Font属性的Size属性设置为16

2.       Label构件放在窗体上,注意标题自动采用16点的字体。

3.       Button构件放在窗体上,它也采用16点的字体。

也可以将这个属性设置为false。但到放置构件时,已经太迟了,必须手工将字体变为构件所要的字体。

 

9.其它常用属性。

属性

说明

BorderStyle

可以取bsSinglebsNone,用bsNone可以让构件融合到背景中Caption设置为构件的标题。许多构件没有标题,因此不提供Caption属性Ctl3D表示构件是否要画三维边框。如果BorderStyle属性为bsNone,则这个属性无效Height设置构件高度

HelpContext

将帮助文件中的索引号与特定构件相关联

Left

设置构件x坐标

PopupMenu

指定用户单击右边按钮时显示的弹出菜单

TabOrder

设置构件的跳表顺序位置,用于窗口化构件

TabStop

表示这个构件可以跳表,设置该属性为false则将其从跳表顺序中删除。用于窗口化构件

Top

设置构件Y坐标

Visible

表示当前构件读取时是否显示,写入时隐藏或显示构件

Width

设置构件宽度

 

阅读(3876) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册