VCL组件之重要的公用属性

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

Align(对齐)属性

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

Color(颜色)属性

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

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

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

Note

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

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

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

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

Cursor(光标)属性

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

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

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

?
1
2
3
4
5
6
7
8
var
  OldCursor: TCursor;
begin
  OldCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  { 做一些长时间的处理工作}
  Screen.Cursor := OldCursor;
end;

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

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

Enabled(允许)属性

通过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。下述代码基于某些条件允许或屏蔽菜单项:

?
1
2
3
4
if CanSave then
  FileSave.Enabled := True
else
  FileSave.Enabled := False;

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

Tip

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

Font(字体)属性

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

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

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 控件的宽度

VCL组件之重要的公用属性相关推荐

  1. VCL组件之主要方法(Methods)和通用事件(Events)

    组件的主要方法(Methods) 大多数组件有20多个公用方法,窗口组件有40多个公用方法可以选择.有趣地是,并不是都被广泛使用.组件的多数功能通过属性来完成.例如,隐蔽一组件,可调用其Hide方法或 ...

  2. VCL组件之TStrings

    TStrings类是管理字符串列表的VCL类.有几个VCL组件使用TString实例来管理它们的数据(通常是文本).例如在之前的ScratchPad应用程序时使用了TStrings,你可能不记得使用了 ...

  3. VCL组件之编辑控件

    VCL组件之编辑控件 Note 以后将用两种方式提及组件,以组件的名称或定义组件的VCL类的名称.可以说"Label组件用于--"或说"TLabel用于--", ...

  4. 一个磁性窗体VCL组件的具体实现

    一个磁性窗体VCL组件的具体实现 副标题: 作者:佚名 文章来源:大富翁 点击数:52 更新时间:2005-2-25     文:陈达军 日期:2003-10-29 记得<程序员>杂志中曾 ...

  5. 结合Delphi和Python的优势:使用Delphi VCL组件快速构建超现代的Python本机Windows GUI桌面酷炫用户界面应用

    Delphi开发Pyhron GUI 有时您的应用程序需要一个用户界面,但是为Python应用程序制作用户界面最好的方法是什么?输入用于Python的DelphiVCL.VCL是成熟的Windows本 ...

  6. Delphi中预想不到的代码楼主zswang(伴水清清)(专家门诊清洁工)2002-05-16 14:20:38 在 Delphi / VCL组件开发及应用 提问

    Delphi中预想不到的代码 楼主zswang(伴水清清)(专家门诊清洁工)2002-05-16 14:20:38 在 Delphi / VCL组件开发及应用 提问 No.1   Delphi中的In ...

  7. react笔记_07组件实例化对象的三大属性

    目录 前提 状态(state) 作用 语法 状态使用 总结 属性(props) 展开运算符复习 props-作为属性传入数据 props-使用展开运算符展开对象 props-进行数据类型限制 prop ...

  8. Vue:Vue的element组件中的el-row的属性gutter什么意思?

    Vue:Vue的element组件中的el-row的属性gutter什么意思? 资源 gutter elementui中gutter和offset的区别

  9. 修改AlertDialog各组件颜色、字体等属性、禁止返回键、外框不消失、android9.0不居中显示问题解决

    修改AlertDialog各组件颜色.字体等属性 像下图这种Dialog该怎么实现呢? 乍一看视觉效果还可以,但当我们想改变一下标题的文字颜色或者按钮颜色应该怎么做呢? 查看源码 public cla ...

最新文章

  1. 特斯拉起诉小鹏汽车员工窃取商业机密,何小鹏回应
  2. 马克.扎克伯格的执行力
  3. linux自动删除30天前的日志文件
  4. js调用java代码返回解决方案
  5. Linux中增加软路由的两种方法,Linux中增加软路由的三种方法
  6. 注入工具的原理和开发
  7. BASIC-11 十六进制转十进制
  8. 网站升级到新服务器,第一次折腾站点升级HTTPS 虽胜尤败
  9. 大数据应用时代来袭 SaaS走向没落?
  10. logisim优先编码器怎么用_编码器简介、应用的stm32代码及注释
  11. ArcGIS Python编程案例-电子资料链接
  12. Git笔记(14) 分支开发工作流
  13. 【考研】2020,计算机,考研,划水复习帖
  14. 微信公众号全局返回码
  15. 三毛的老家:4月中旬了还在中雪!
  16. 教你用GoldWave剪裁音频作短视频BGM
  17. 2012年世界500强排行榜(企业名单)
  18. Linux7 core是什么系统,Centos7+.NET CORE初探
  19. 基于tkinter制作的一个策略小游戏
  20. HDU多校第三场6608 Fansblog(米勒罗宾+威尔逊定理)

热门文章

  1. 中消协:要选择优质电子显示产品 OLED屏整体上略胜一筹
  2. 继苏宁京东后 拼多多也宣布下调新款iPhone售价
  3. 给我一个小碗,还你一个奇迹——结构工程师教你吃垮必胜客(有图,附论文)【ZT】...
  4. oSIP开发者手册 (二)
  5. java smtp pop3_POP3/SMTP指令
  6. 设计模式之--单例模式
  7. centos mate桌面_CENTOS7安装各种桌面系统 CENTOS安装桌面图形化GUI GNOME/KDE/Cinnamon/MATE/Xfce...
  8. 我的内核学习笔记16:海思Hi3516平台PWM使用记录
  9. eclipse中复制导入的项目并且修改了项目名字,项目后面的括号显示原来项目的名字
  10. k8s安装读取内核modules_kubespray国内云平台一键部署k8s