所有的组件都有某些公用的属性。例如所有的可视化组件都有Left和Top属性,它决定了组件在窗体上的位置。像Left、Top、Height及Width属性都是不言自明的,在此就不重复了。然而有几个公用属性值得稍微仔细地探讨。
在前面的讲解Form Designer中已经讨论了Align属性,就不要重复讨论了。
设置组件的背景颜色(文本的颜色通过Font属性设置)。虽然Color属性用起来简单,但是有关组件颜色的几个方面需要指出。
在Object Inspector中处理Color属性的方式有些特殊。如果点击Color属性的Value栏,就会看到下拉颜色列表。
如果双击Value栏,会弹出Color对话框。此对话框能从基本颜色中选择,或者点击“规定自定义颜色”按钮来建立自定义颜色。如下图:
Note
如果在应用程序中实现了ColorDialog组件,就会出现相同的Color对话框。
如果从Color对话框中选择了一种颜色,会看见Color属性的值改变为十六进制字符串。这个字符串代表了构成颜色的红、绿、蓝(RGB)的值。如果知道颜色的确切RGB值,可把它输入进去。
多数情况是从提供的颜色值表中选择颜色。当点击下拉按钮来显示可能值列表时,会看到总共有两组值。
Cursor属性控制着用户在组件上移动的鼠标光标。窗口对某些组件自动改变光标。例如,当光标在Edit、Memo或RichEdit组件上移动时,光标变成I形状光标。
要使Windows管理光标,将Cursor属性设置为crDefault。如果有专用的窗口(组件),就指定其中一个光标。当鼠标移动到那个组件上时,Windows改变光标为指定的那个。
通常,需要在运行阶段改变光标,例如,长时间的处理应该显示沙漏光标来提醒用户。当重新设置光标时,要保证其能回到开始状态。例如下面的代码说了此概念。
var OldCursor: TCursor; begin OldCursor := Screen.Cursor; Screen.Cursor := crHourGlass; { 做一些长时间的处理工作} Screen.Cursor := OldCursor; end;
这就保证了为应用程序能回到最初状态的光标。
另一个光标属性是DragCursor,用于设定在支持拖放的组件上时显示的光标。对于颜色,在光标上使用要审慎而行,可在需要时使用定值光标,但不能过多使用。
通过Enabled属性,组件可成为允许的或屏蔽的。当组件被屏蔽时,它不能接受输入焦点(点击它时没有用)。例如,按钮在屏蔽下文本变灰,并且无法点击,如下图:
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属性是TFont类的实例,因此有其自身的属性。在Object Inspector中双击Font属性Value栏弹出字体对话框来设置字体。
Font属性扩展节点后,包括的属性有:
Color属性设置字体的颜色。
Name属性设置字体名称。
TFont中的Height和Size属性也值得特别提出:
当改变Height和Size的其中一个时,另个也会自动改变。Height属性通常为负数,TFont的在线帮助可以解释为什么这样。
字体可以成比例大小或固定大小。
理论上,Pitch属性用于将成比例空间字体转化为固定空间字体或反之。而问题是Windows执行字体代换来实现转化,换句话说,不知道将得到什么。因此最好选需要的字体而不依赖于Pitch属性。
最后TFont的Style属性包括黑体、斜体、下划线和删除样式。这些样式可以混合使用。
Hint属性用于给组件设置提示文本。Hint文本两部分:
为了显示短提示,必须将Application对象的ShowHint属性为True(此为缺省值),也要把组件的ShowHint设置为True。显示在状态栏的长提示需要多一些工作,留到以后讨论。
Note
你可以指定短提示文本,长提示文本或两者,使用管道号来告诉Delphi要使用哪种提示文本。若不用管道号,则短提示和长提示都使用相同的文本。
Note
尽管对长提示或短提示的长度没有限制,应在建立它们时记住每个提示的使用。短提示应限制在30个字符或更短,长提示应更具有描述性,但要记住,如果长提示太长,在状态栏显示时会被剪短。
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属性是一种高级编程技术。
这些属性不需要更多的解释,它们列在这里作一参考。不是所有组件都有表中列出的每个属性。