VCL组件之重要的公用属性

所有的组件都有某些公用的属性。例如所有的可视化组件都有Left和Top属性,它决定了组件在窗体上的位置。像Left、Top、Height及Width属性都是不言自明的,在此就不重复了。然而有几个公用属性值得稍微仔细地探讨。

 

Align(对齐)属性

在前面的讲解Form Designer中已经讨论了Align属性,就不要重复讨论了。

 

Color(颜色)属性

设置组件的背景颜色(文本的颜色通过Font属性设置)。虽然Color属性用起来简单,但是有关组件颜色的几个方面需要指出。

在Object Inspector中处理Color属性的方式有些特殊。如果点击Color属性的Value栏,就会看到下拉颜色列表。

image

如果双击Value栏,会弹出Color对话框。此对话框能从基本颜色中选择,或者点击“规定自定义颜色”按钮来建立自定义颜色。如下图:

0176

Note

如果在应用程序中实现了ColorDialog组件,就会出现相同的Color对话框。

如果从Color对话框中选择了一种颜色,会看见Color属性的值改变为十六进制字符串。这个字符串代表了构成颜色的红、绿、蓝(RGB)的值。如果知道颜色的确切RGB值,可把它输入进去。

0177

多数情况是从提供的颜色值表中选择颜色。当点击下拉按钮来显示可能值列表时,会看到总共有两组值。

  • 第一组颜色从clBlackclMedGray。Delphi预定义颜色,这个代表了最常用的颜色。要选出颜色中的一种,只要点击表中的颜色。如果在表中找不到适合需要的颜色,可以激活Color对话框自己选择颜色。
  • 第二组颜色从clActiveBorder开始。这组颜色表示窗口系统颜色。如果使用此表中的颜色,在用户改变系统窗口颜色时,应用程序会自动调整它的颜色。正确使用颜色为用户提供愉悦环境。

 

Cursor(光标)属性

Cursor属性控制着用户在组件上移动的鼠标光标。窗口对某些组件自动改变光标。例如,当光标在Edit、Memo或RichEdit组件上移动时,光标变成I形状光标。

要使Windows管理光标,将Cursor属性设置为crDefault。如果有专用的窗口(组件),就指定其中一个光标。当鼠标移动到那个组件上时,Windows改变光标为指定的那个。

0178

通常,需要在运行阶段改变光标,例如,长时间的处理应该显示沙漏光标来提醒用户。当重新设置光标时,要保证其能回到开始状态。例如下面的代码说了此概念。

var
  OldCursor: TCursor;
begin
  OldCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  { 做一些长时间的处理工作}
  Screen.Cursor := OldCursor;
end;

这就保证了为应用程序能回到最初状态的光标。

另一个光标属性是DragCursor,用于设定在支持拖放的组件上时显示的光标。对于颜色,在光标上使用要审慎而行,可在需要时使用定值光标,但不能过多使用。

 

Enabled(允许)属性

通过Enabled属性,组件可成为允许的或屏蔽的。当组件被屏蔽时,它不能接受输入焦点(点击它时没有用)。例如,按钮在屏蔽下文本变灰,并且无法点击,如下图:

0179

Enabled属性是Boolean类型,设置为True使组件为允许,设置为False使组件屏蔽。允许与屏蔽窗口是Windows本身特性。

Note

某些组件在设计阶段显示它们的屏蔽状态,但为数不多。BitBtn组件就是在设计阶段显示其屏蔽状态的。

Enabled属性大多应用于窗口组件(windowed components),也可用于非窗口(Non-windowed components)。SpeedButton组件是可以屏蔽的非窗口组件的例子。

Note

改变Panel组件的Enabled属性有另外提示。面板(Panel)常作为其他控件的容器,因此面板称为安放在面板上控件的父控件。如果屏蔽面板,面板上的组件不会显示被屏蔽了,它不起作用因为其父控件(Panel)被屏蔽了。

尽管组件可在设计阶段被屏蔽,但更常在运行阶段进行组件的允许和屏蔽操作。例如,Menu菜单项根据给定期间它们是否应用来确定是允许还是屏蔽的。

要在运行阶段屏蔽组件,将其Enabled属性赋值False,要允许组件将Enabled属性赋值True。下述代码基于某些条件允许或屏蔽菜单项:

  if CanSave then
    FileSave.Enabled := True
  else
    FileSave.Enabled := False;

这个过程经常被称为command enabling,是专业Windows程序的重要部分。

Tip

TActionList组件用于允许或屏蔽组件或组件组。在以后的讲解中会讨论到TActionList。

 

Font(字体)属性

Font属性是TFont类的实例,因此有其自身的属性。在Object Inspector中双击Font属性Value栏弹出字体对话框来设置字体。

0180

Font属性扩展节点后,包括的属性有:

image

Color属性设置字体的颜色。

Name属性设置字体名称。

TFont中的Height和Size属性也值得特别提出:

  • Height属性指定字体的像素高度。
  • Size属性用于指定字体的高度(单位:磅)

当改变Height和Size的其中一个时,另个也会自动改变。Height属性通常为负数,TFont的在线帮助可以解释为什么这样。

字体可以成比例大小或固定大小。

  • 大多数字体是成比例大小的(proportionally spaced),这意味着每个字母只占需要的空间。比如大写M比小写z占用更多的控件。成比例字体例如,Times New Roman,Arial及Bookman。
  • 固定大小(fixed space )字体( 固定字距fixed-pitch字体),是所有字符占有相同的空间。这对于Code Editor或其他需要固定字距字体的窗口来说是方便的。Courier New可能是最普遍使用的固定字距字体,尽管Fixedsys是某些窗口应用程序选择的窗口固定字距字体。固定大小字体很难读,通常不应用于长块的文本,而用于代码。

理论上,Pitch属性用于将成比例空间字体转化为固定空间字体或反之。而问题是Windows执行字体代换来实现转化,换句话说,不知道将得到什么。因此最好选需要的字体而不依赖于Pitch属性。

最后TFont的Style属性包括黑体、斜体、下划线和删除样式。这些样式可以混合使用。

 

Hint(提示)属性

Hint属性用于给组件设置提示文本。Hint文本两部分:

  • 第一部分称作短提示(short hint),当用户把光标放在组件上并停止时显示的提示文本。弹出的提示信息的窗口称作tooltip。
  • 第二部分称为长提示(long hint),它是可选择性提示文本,当用户在组件上移动光标时它显示在状态栏中。短提示与长提示用管道号(|)分隔开。例如指定“File Open”的SpeedButton,可以指定其Hint属性为:
    File Open | Open a file for editing

为了显示短提示,必须将Application对象的ShowHint属性为True(此为缺省值),也要把组件的ShowHint设置为True。显示在状态栏的长提示需要多一些工作,留到以后讨论。

Note

你可以指定短提示文本,长提示文本或两者,使用管道号来告诉Delphi要使用哪种提示文本。若不用管道号,则短提示和长提示都使用相同的文本。

 

Note

尽管对长提示或短提示的长度没有限制,应在建立它们时记住每个提示的使用。短提示应限制在30个字符或更短,长提示应更具有描述性,但要记住,如果长提示太长,在状态栏显示时会被剪短。

 

ParentColor、ParentCtl3D、ParentFont及ParentShowHint属性

Note

Ctl3D属性设置控件的3D或者2D显示效果。

这些属性都以系统的方式工作,因此一起讨论。当把它们设置为True时,组件可从其父组件中继承其Color、Ctl3D、Font和ShowHint属性设置。例如,对大部分组件,其ParentFont属性缺省值为True,这指组件继承其父组件使用的字体属性。下面做个联系,好好去理解下。

(1)建立一个空窗体,设置其Font属性的Size属性为16。

(2)在窗体上放置一个Label组件,注意此时Label的Font属性的Size属性自动使用16磅。

(3)在窗体上放置Button组件,它也使用16磅字体大小。

此时把此属性设置为False,但组件已经安放好了,就必须要手动改变组件的字体。

 

Tag属性

Tag属性就是一个四字节的变量,你可以用此属性存储此组件所需的任何数据。此数据可能是指向类的指针,索引值或者其他数字。使用Tag属性是一种高级编程技术。

 

其他公用属性

这些属性不需要更多的解释,它们列在这里作一参考。不是所有组件都有表中列出的每个属性。

  • BorderStyle 可以是bsSingle或者bsNone,bsNone用于使组件与背景融合在一起。
  • BoundsRect 定义控件边框矩形(只适合于运行时)
  • Caption 控件的标题
  • ClientHeight 组件用户区的高度
  • ClientWidth 组件用户区的宽度
  • ClientRect 组件用户区矩形
  • Constraints 在改变大小操作期间限定控件(或窗体)的最大与最小尺寸
  • Ctl3D 确定控件是否具有三维效果
  • Height 控件的高度
  • HelpContext 用于激活上下文相关帮助的上下文数值
  • Left 组件左上角的水平坐标
  • Parent 表示父控件(只适用于运行时)
  • PopupMenu 当用户在控件上点击鼠标右键时出现的弹出式菜单
  • TabOrder 确定父控件的切换顺序
  • TabStop 确定用户是否可以使用Tab键移动控件
  • Top 组件左上角的垂直坐标(y坐标)
  • Visible 确定控件是否可视,读此属性,提示控件是否当前可见;写此属性,隐蔽或显示控件
  • Width 控件的宽度

posted on 2012-01-21 17:32  pchmonster  阅读(2100)  评论(2编辑  收藏  举报

导航