公共属性
# Smart 公共属性、方法和事件
# 1. 大多数组件共有的属性
每个组件都有其特定的属性,但有些属性对所有的组件是通用的。下面列出一些通用的属性并附有简短的说明。
属性 | 适用范围 | 功能简述 |
---|---|---|
Action | 一些组件 | 标识与组件连接的活动对象 |
Align | 一些组件 | 确定空间在其父组件区域内的对齐方式 |
AutoSize | 一些组件 | 组件是否可以根据其内容确定自己的大小 |
BoundRect | 所有组件 | 定义组件矩形连框(运行时用) |
ComponentCount | 所有组件 | 当前组件拥有的组件数目(运行时用) |
ComponentIndex | 所有组件 | 当前组件在父组件列表中的位置(运行时用) |
Components | 所有组件 | 当前组件拥有的子组件数组(运行时用) |
ControlCount | 所有组件 | 当前组件的自组建数目(运行时用) |
Controls | 所有组件 | 当前组件的子组件数组(运行时用) |
Color | 大部分组件 | 当前组件的表面背景色 |
Ctl3D | 大部分组件 | 确定组件是否有三维效果 |
Cursor | 所有组件 | 当前组件上的光标形状 |
DragCursor | 大部分组件 | 当前组件接受拖动时光标的形状 |
Enabled | 所有组件 | 确定组件是否被激活 |
Focused | 所有组件 | 确定组件是否被聚焦 |
Font | 所有组件 | 确定组件内显示的文本字体 |
Handle | 窗口组件 | 组件使用的系统窗口句柄(运行时用) |
Height | 所有组件 | 组件的高度 |
Hint | 所有组件 | 组件显示提示的字符串 |
Left | 所有组件 | 组件左上角的水平坐标 |
Name | 所有组件 | 组件实例的唯一名称 |
Owner | 所有组件 | 表示主组件(运行时用,只读) |
Parent | 所有组件 | 表示父组件 |
ParentFont | 所有组件 | 确定组件是否使用父组件的Font |
ParentCtl3D | 大部分组件 | 确定组件是否使用父组件的Ctl3D |
PopupMenus | 所有组件 | 在组件上单击光标右键时出现的弹出式菜单 |
ShowHint | 所有组件 | 确定是否激活提示功能 |
TabOrder | 窗口组件 | 确定父组件的切换程序 |
Visible | 所有组件 | 确定组件是否可见 |
Tag | 所有组件 | 存储一个整形变量的值,无实际意义 |
Top | 所有组件 | 可定位组件的顶部位置 |
Width | 所有组件 | 组件的宽度 |
Caption | 大部分组件 | 该属性可指定标注组件的文本字符串 |
# 1.1. Action 属性
property Action;
标识与组件连接的活动对象,允许应用程序集中响应用户的命令。当组件与行为相关联时,行为确定组件的适当属性和方法。要在设计程序时创建行为,则在窗体或数据模块上放置行为列表组件。双击该行为列表,将出现行为列表编辑器,使用菜单添加行为。使用列表编辑器添加的行为将在对象观察器中的Action属性的下拉列表中显示。
- 应用
为了节省代码的编辑量,可使用ActionList组件来编写代码。双击ActionList组件,打开Main.ActionList1对话框,单击“添加”按钮。在Action1的OnExecute事件中编写代码。在BitBtn1组件和MainMenu1组件的N2的Action属性中选择Action1,在单击BitBtn1组件和MainMenu1组件的N2时,都会调用Action1的OnExecute事件。
# 1.2. Align属性
property Align;
使用该属性可在窗体或面板上将组件排列到顶端、底端、左边或右边,并且即使窗体、面板或包含组件的大小发生变化,也仍然会保持对齐方式。可以使窗体以某种方式对齐,下面是所选对齐方式的说明。
所选内容 | 说明 |
---|---|
alBottom | 组件被移到容器的底端 |
alClient | 使组件填充整个容器 |
alCustom | 以自定义方式显示窗体 |
alLeft | 组件被移到容器的左端 |
alNone | 组件仍然在其原来的位置 |
alRight | 组件被移到容器的右端 |
alTop | 组件被移到容器的顶端 |
# 1.3. AutoSize属性
property AutoSize;
说明组件是否可以根据其内容确定自己的大小。将窗体的AutoSize属性设置为True时,窗体可根据窗体中的内容确定自己的大小,作为该窗体的默认打开的大小。
# 1.4. BoundRect属性
property BoundRect: TRect read GetBoundsRect write SetBoundsRect;
定义组件矩形连框(运行时用)。通过程序来设置组件的位置和大小。
procedure TMyHandler.BUTTON1CLICK;
var
Rect: TRect;
begin
Rect.Left := 0;
Rect.Top := 0;
Rect.Right := 200;
Rect.Bottom := 200;
FThis.Button1.BoundsRect := Rect;
end;
2
3
4
5
6
7
8
9
10
窗体初始化后,点击Button1按钮,窗体中的组件将按照指定的设置显示。
# 1.5. ComponentCount属性
property ComponentCount: Integer;
使用该属性查找或检查组件拥有的子组件数,或当Components列表重复执行该组件的一些行为时使用该属性。该属性由反复执行程序内部使用。注意,该组件的ComponentCount包含的项目数与该组件Components属性列表中的项目数相同。
- 应用
ComponentCount属性用于确定滚动框所拥有的组件数。在程序中,可以使用该属性利用循环的方式访问所有者为滚动框的所有组件。下面的代码演示了如何访问滚动框所具有的组件。
procedure TMyHandler.BUTTON1CLICK;
var
i: Integer;
begin
FThis.Memo1.Lines.Add('滚动框中的组件数为:' + IntToStr(FThis.ScrollBox1.ComponentCount));
for i := 0 to FThis.ScrollBox1.ComponentCount - 1 do
begin
FThis.Memo1.Lines.Add(FThis.ScrollBox1.Components[i].Name);
end;
end;
procedure TMyHandler.BUTTON2CLICK;
//点击显示按钮动态创建组件并显示
var
i: Integer;
temp: TEdit;
begin
for i := 0 to 5 do
begin
temp := TEdit.Create(FThis.ScrollBox1);
temp.Parent := FThis.ScrollBox1;
temp.Left := 5;
temp.Name := 'Edit' + IntToStr(i);
temp.Top := temp.Height * i + 5;
temp.Text := '属于滚动框';
temp.Visible := True;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1.6. ComponentIndex属性
property ComponentIndex: Integer;
该属性用于指定组件在其自己的Components属性数组中的位置。当重复通过组件的Components列表的拥有者执行某些组件行为时使用该属性。使用这个属性可以直接与组件建立联系,该熟悉也可以在重复分配过程中内部使用。组件列表中第一个组件的ComponentIndex属性值为0,第2个组件为1……,当和ComponentIndex一起使用时,ComponentCount属性的值总是最高的ComponentIndex的值。
# 1.7. Components属性
property Components[Index: Integer]: TComponent;
使用该属性可访问组件内拥有的任何子组件,包含滚动框所拥有的组件。通过该属性可以访问到滚动框所拥有的任意一个组件。在介绍ComponentCount属性及ComponentIndex属性时,都使用了Components属性得到相应的组件信息。Component属性时一个数组属性,包含滚动框所拥有的组件。通过该属性可以访问到滚动框所拥有的任意一个组件。在介绍ComponentCount属性及ComponentIndex属性时,都使用了Components属性得到相应的组件信息。
# 1.8. ControlCount属性
property ControlCount: Integer;
该属性用于指定窗体组件的子组件的数量,在重复便利组件的所有子组件时被读取。组件的所有子组件列在Controls属性数组中。该属性为只读。
- 应用
ControlCount属性用于获得子组件(滚动框中)的数量。在开发程序时,经常需要清空一些文本数据,可以使用该属性利用循环的方法清空一组数据,代码如下:
procedure TMyHandler.BUTTON1CLICK;
var
i: Integer;
begin
for i := 0 to FThis.ScrollBox1.ControlCount - 1 do
begin
if FThis.ScrollBox1.Controls[i] is TEdit then
TEdit(FThis.ScrollBox1.Controls[i]).Text := '';
end;
end;
2
3
4
5
6
7
8
9
10
单击Button1按钮,清空编辑框中的文本,如图所示。
# 1.9. Controls属性
property Controls[Index: Integer]: TControl;
该属性时一个包含窗口组件的所有子组件的数组,便于用数字指定窗口组件的子组件。这个属性便于用数字指定窗口组件的子组件,在重复遍历窗口组件的所有子组件时将被用到。该属性列出了组件的所有子组件,而Components属性列出了组件所拥有的所有组件。所有放置在窗体中的组件为窗体所拥有,因此即使这些组件是窗体中某一组件的子窗体,也会出现在窗体的Components属性列表中。该属性为只读,使用InsertControl或RemoveControl方法也可以增加或删除子组件。若要从一个父组件中移动子组件到另外的组件中,则设置子组件的Parent,将在原父组件中处理RemoveControl,在新父组件中处理InsertControl。
- 应用
Control属性用于列举所有子组件。在开发程序的过程中,当需要访问一组组件时,如果直接使用组件名称访问组件,既不方便也不灵活。可以使用组件父亲(Parent)的Controls属性访问组件,代码详见1.1.8节。
# 1.10. Color属性
property Color nodefault;
当前组件的表面背景颜色。
# 1.11. Ctl3D属性
property Ctl3D: Boolean;
该属性用于确定组件是否具有3D或2D外观,它提供了向后兼容性,在32位Windows或NT4.0以上版本中无效。在早期的平台上,该属性控制组件是平坦的,还是有倾角的。
# 1.12. Cursor属性
property Cursor: TCursor read FCursor write SetCursor default crDefault;
显示当前组件上的光标形状。
# 1.13. DragCursor属性
property DragCursor: TCursor read FDragCursor write FDragCursor default crDrag;
当前组件接受拖动时光标的形状。
# 1.14. Enabled属性
property Enabled;
确定组件是否激活。
- 应用
设置组件的可用度,代码如下:
procedure TMyHandler.BITBTN1CLICK;
begin
if i = 0 then
begin
FThis.Edit1.Enabled := False;
i := i + 1;
FThis.BitBtn1.Caption := '可用';
end
else
begin
FThis.Edit1.Enabled := True;
i := i - 1;
FThis.BitBtn1.Caption := '不可用';
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1.15. Focused属性
function TWinControl.Focused: Boolean;
确定组件是否被聚焦。
# 1.16. Font属性
property Font;
确定组件内显示的文本字体。
- 应用
单击Font属性右边的“...”按钮,打开“字体对话框”,在“字体”对话框中可以对文字的字体、大小、颜色、字形等进行设置。
# 1.17. Handle属性
property Handle: HWND;
Handle属性未滚动框提供了访问底层的Windows屏幕对象的句柄。
# 1.18. Height属性
property Height: Integer read FHeight write SetHeight;
对组件的高度进行设置。
# 1.19. Hint属性
property Hint: string read FHint write FHint stored IsHintStored;
组件显示提示的字符串。当ShowHint属性为True时该属性才可用。对一些无文字的按钮进行说明。在SpeedButton按钮的Hint属性中输入“获取文件的路径”,将ShowHint属性设置为True。在运行程序之后,将光标移到SpeedButton按钮上停留3秒钟,这时就会显示一个黄色的说明框。
# 1.20. Left属性
property Left: Integer read FLeft write SetLeft;
组件左上角的水平坐标。
# 1.21. Name属性
property Name: TComponentName read FName write SetName stored False;
默认时,IDE根据组件的类型设定连续的名称。该属性必须是一个有效的标识符。只能在程序设计时修改组件名称。在设计程序时,编程人员可以根据自己的喜好设置组件的唯一名称。
# 1.22. Owner属性
property Owner: TComponent;
使用该属性可获得组件的拥有者。当一个组件拥有另一个组件时,释放其他拥有者内存时,也释放其拥有的内存。当删除一个窗体时,也删除窗体中的所有组件。创建组件时,组件拥有者由传递到构造函数的参数确定。对于在窗体设计器上创建的组件,窗体将自动作为拥有者分配。
- 应用
Owner属性用于确定组件的所有者,组件的所有者(Owner)主要 有两个作用:一是当组件释放时,所有者会释放掉其拥有的所有组件,二是用于加载和保存所有者所拥有的所有组件的Published属性。在默认情况下,窗体拥有其上的所有组件,应用程序 拥有窗体,当窗体释放时,其上的所有组件均被释放,,应用程序结束时,它所拥有的内存空间被全部释放。当窗体被加载到内存中时,它也将加载其上的所有组件。组件的所有者由构造函数中的参数指定。 下面的例子在窗体创建时构造了一个滚动框组件,其所有者是一个面板,然后通过单击按 钮释放掉面板组件。在试图访问滚动框时,程序将出现地址访问错误,其代码如下:
procedure TMyHandler.BUTTON1CLICK;
//释放面板
begin
FThis.Panel1.Free;
end;
procedure TMyHandler.BUTTON2CLICK;
//访问滚动框
begin
FThis.ScrollBox1.AutoSize := True;
end;
2
3
4
5
6
7
8
9
10
11
单击“访问滚动框”按钮,程序出现地址访问错误。
# 1.23. Parent属性
property Parent: TWinControl read FParent write SetParent;
使用该属性可获得或设置组件的父体,即包含组件的窗口,包含组件称为父体的子组件。 在程序运行时创建一个新组件时,为其分配该属性值。父组件通常为窗体面板、组合框或一些可包含组件的组件。
- 应用
将图标放在状态栏的最左面。
procedure TMyHandler.BUTTON1CLICK;
//将图标放入状态栏
begin
FThis.Image1.Parent := FThis.StatusBar1;
FThis.Image1.Left := 2;
FThis.Image1.Top := 3;
FThis.Image1.Width := 32;
FThis.Image1.Visible := True;
end;
2
3
4
5
6
7
8
9
运行结果如下图所示。
# 1.24. ParentFont属性
property ParentFont;
组件要使用与其父组件相同的字体,则将该属性设置为True;如果为False,则组件使用自己的Font属性。将所有的组件的ParentFont属性设置为True,可确保窗体的组件具有统一性。
# 1.25. ParentCtl3D属性
property ParentCtl3D: Boolean read FParentCtl3D write SetParentCtl3D default True;
组件要使用与其父组件相同的3D效果。则将该属性设置为True;如果为False,则组件使用自己的Ctl3D属性。将所有的组件的ParentCtl3D属性设置为True,可确保窗体的形状具有统一性。
# 1.26. PopupMenu属性
property PopupMenu: TPopupMenu;
为该属性分配一个值,可使右击组件后显示弹出式菜单。如果TPopupMenu对象的这个属 性为True,则动显示弹出式菜单;否则从组件的OnContextPopup事件处理粒序中调用菜单的Popup方法显示菜单。
- 应用
PopupMenu属性确定滚动框关联的弹出式菜单。如果为该属性指定一个弹出式菜单,并且弹出式菜单的AutoPopup属性为True,那么当用户用鼠标右键单击滚动框时将显示一个弹出式菜单(需在PopupMenu组件中设置右键菜单选项),代码如下:
begin
This.ScrollBox1.PopupMenu := This.PopupMenu1;
end.
2
3
# 1.27. ShowHint属性
property ShowHint;
当鼠标指针在组件上停顿片刻时,可以使用该属性确定组件是否显示一个帮助提示。帮助提示是Hint属性值,在组件旁边的一个框内显示。若要允许一个特定组件显示帮助提示,则应用程序和组件的ShowHint属性必须为True,或组件的ParentShowHint属性和其父组件的 ShowHint属性必须为True。ShowHint属性用于对一些无文字的按钮进行说明。在SpeedButton按钮的Hint属性中输入提示信息,将ShowHint属性设为True。在运行程序后,将光标移到SpeedButton按钮上停留3秒钟,会显示一个黄色的说明框。
# 1.28. TabOrder属性
type TTabOrder = -1...32767;
property TabOrder: TTabOrder;
2
该属性用于在其父组件的标签顺序中指定子组件的位置。当用户按下Tab键后,该属性是访问子窗口的顺序。当窗体第1次显示时,该属性值为0的组件是有焦点的组件。开始,标签顺序总是组件被添加到窗口中的顺序。第1次添加到窗口中的组件的该属性值为0,第2次为1, 依次类推。改变该属性值可改变标签顺序。在父组件窗口中,每一组件具有惟一的标签顺序值。 如果用户改变某一组件的TabOrder属性值使之等于另一组件的TabOrder属性值,则其他组件的TabOrder值也将改变。如果指定某组件的TabOrder属性值大于父组件包含的组件数,则移动该组件至标签顺序最后。
仅当组件的TabStop属性值为True且该组件有父组件时,该属性才有效(除非窗体没有父组件,因此不能通过按下Tab键访问该组件。如果要在Tab顺序中删除父组件,则设置父组件的该属性为False)。
# 1.29. Visible属性
property Visible;
使用该属性可控制组件在运行时的可视性。在设计程序时,有时候需要放置组件但不是实时显示,只有在特定事件触发的情况下才显示,这时可使用该属性进行设置。
# 1.30. Tag属性
property Tag: Longint;
该属性没有预先确定的含义,是为开发人员的使用方便而提供的。可用T保存另外的整型数值,或输入32位值,例如组件参数或指针。
Tag属性足为组件提供的一个附加整数值。该属性没有确定的意义,只足为了方便开发者 而设计的一个整型属性,能够存储一个附加的整数值。在开发程序时,可以为每个组件指定一 个不同的Tag值,在运行程序时,可以根据不同的Tag值区分组件。
# 1.31. Top属性
property Top: Integer read FTop write SetTop;
使用该属性可定位组件的顶部位置或将组件重新放罝到一个不同的Y坐标位置。
# 1.32. Width属性
property Width;
使用属性可读取或修改组件的宽度。
# 1.33. Caption属性
property Caption stored IsCustomCaption;
该属性用于指定标注组件的文本字符串,通常作为显示窗口标题或标注的文本。