Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)aaa
published in(发表于) 2014/7/19 0:10:06
delphi动作列表组件(TActionList)使用实例

delphi动作列表组件(TActionList)使用实例|方法

动作列表组件(TActionList)

使用TActionList 组件是为了集中处理许多常用的操作,把用户界面和应用逻辑分开,减少程序的代码行数,方便程序的维护和调试。它用于维护一系列动作列表,以供其他组件或控制所使用,如菜单和按钮。

1.TActionList 组件的典型用法

动作列表联合动作与其连接者,集中响应用户的命令(动作)。动作列表组件是一个用户接口,它可以加入到Form 和数据模块中,指定动作及响应的组件。在设计时,双击动作组件,出现动作列表编辑器,用户可以增加、删除和重新安排动作。

(1)动作列表机制的3 个环节

动作列表机制涉及3 个环节:动作本身、所谓的“客户”和操作目标。

Delphi 用TAction 及其派生类来描述和操作一个动作。在stdActns 单元中,声明了一些与编辑操作和窗口操作有关的动作(类),它们分别是从TAction 继承下来的;在DBActns 单元中,声明了一些与数据集操作有关的动作(类),它们是从TDataSetAction 继承下来的,而TDataSetAction 又是从TAction继承下来的。

Delphi 用TActionList 来管理一组动作列表,在设计期,可以通过一个专门的动作列表编辑器来创建和管理动作,同时用TActionLink 来建立和操纵动作与客户之间的连接。

客户通常是菜单命令和按钮,如TMenuItem、TToolButton、TSpeedButton、TButton、TCheckBox、TRadioButton 等。

操作目标通常是一个组件,如TMemo、TRichEdit、TDBGrid 等。

(2)管理动作列表

要管理动作列表,首先从组件选项板的“standard”页上选择TActionList 组件,把它放到Form 或数据模块上,然后双击此组件,Delphi 将打开动作列表编辑器。

动作列表编辑器由左右两个框组成。其中,左框显示动作的类别,右框显示各个类别下的动作。刚开始时,动作列表编辑器应为空。

Delphi 7 预定义了一些常用的动作,这些预定义的动作主要分为3 个类别,分别是Edit、Window和DataSet。要把这些预定义的动作加到动作列表编辑器中,单击工具栏上的“新建”按钮旁边的下拉按钮,在弹出的菜单中选择“New Standard Action”命令,Delphi 将打开“Standard Action”对话框,这个对话框列出了所有预定义的动作。

将这些预定义的动作加入到动作列表编辑器后,将按照各自所属的类别排列。

程序员也可以把自定义的动作加入到动作列表编辑器中,只要预先在左框中选择一个类别包括“(None)”,然后单击工具栏上的“新建”按钮边上的下拉按钮,在弹出的菜单中选择“New Action”命令,所选的类别中就会增加一个新的动作,默认的名称是Action1 和Action2。

在图右框中选择一个动作,就可以在Object Inspector 中设置动作的属性或者建立事件句柄。要注意的是,对于不同类别的动作来说,动作所具有的属性并不相同。比如Edit 类别的动作是从TEditAction继承下来的,而自定义的动作是直接从TAction 继承下来的。

(3)为客户指定一个动作

许多VCL 组件都有一个Action 属性,当Form 或数据模块上建立了动作列表,就可以在对象编辑器中设置Action 属性为客户指定一个动作,一旦指定了一个动作,该动作的有关属性和事件句柄将复制给客户。例如在动作列表中有一个动作叫Cancel1,它的Caption 属性是“&Cancel?,并且建立了处理OnExecute 事件的句柄。程序示例代码如下:

procedure TForm1.Cancel1Execute(Sender:TObject);

begin

MessgeBeep(0);

end;

假设Form 上有一个按钮Button1,设置它的Caption 属性为“Button1”,现在把它的Action 属性设为Cancel1,这时Button1 的Caption 属性将变成“&Cancel”。当用户单击这个按钮,计算机的喇叭将发出“嘀”的一声。

当应用程序空闲时,每个动作将发生OnUpdate 事件,这样就有机会决定它们的Enabled 属性或Checked 属性怎样设置。程序示例代码如下:

procedure TForm1.ForwardActionUpdate(Sender:TObject);

begin

if HistoryList.Count>0 then

ForwardAction.Enabled:=HistoryIndex
else

ForwardAction.Enabled:=False;

end;

处理OnUpdate 事件的代码要尽可能地简短,否则会影响应用程序的性能。

2.TActionList 组件的重要属性

·ActionCount 此属性用于设置动作列表中的动作数量

·Actions 包含动作的索引列表

·Images 可以被动作使用的图像列表

下面介绍程序中TActionList 组件常用的属性。

(1)Actions 属性

此属性可以返回包含动作的索引列表,Actions 属性中包含一个Integer 类型的参数,用来指定索引值。下面的代码可以为Button2 指定一个TActionList 组件中的某个动作:

Button2.Action:= ActionList.Actions[1];

(2)Images 属性

此属性可以指定一个被动作使用的图像列表,然后可以为各动作指定动作列表中的某个图像。当一个可以显示图像的组件被指定为TActionList 组件中的动作时,组件上就会出现相应的图像。




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759