




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi中ActionList组件在菜单编制中的应用 Delphi的VCL提供有MainNenu、PopupMenu、Button、BitBtn、SpeedButton等组件来帮助我们设计菜单功能。这些组件的使用方式非常 简单,因而使得菜单的设计也变的很简单。 MainMenu组件是主要的下拉式菜单,大部份的窗口程序菜单都是使用这个对象来完成的。它的优点是设计方式简单,符合标准,不占画面空间 。缺点是必须一层一层地进入子功能选项,无法一次看到所有 功能选项,而且在尚无选择任何功能之前,窗口内空无一物,不甚美观。 Delphi还提供了PopupMenu组件来制作鼠标右键菜单,使用鼠标指向任一对象,再按下鼠标右键时,会看到一个下拉式的功能菜单,可以直接选择这些功能,而不用进入一层又一层的主功能菜单,使用非常方便 。 利用Delphi提供的Button、BitBtn、SpeedButton三个按钮组件,可以制作按钮菜单。它的优点是可以加入漂亮的图标,一次可以看到许多选项。缺点是占程序及画面空间,而且不符合窗口应用程序标准规范。 至于使用何种方式来构造自己的功能菜单,必须根据自己的需要而定,如果你想编写 一个符合窗口标准的应用程序,下拉式菜单是唯一的选择,如果你编写的应用程序功能选项并不多,可以考虑采用按钮菜单的设计方式。那么是不是在编制菜单程序时,只能选择下拉式菜单或按钮菜单中的一种呢?答案当然不是。你完全可以将下拉式菜单、按钮菜单、鼠标右键菜单联合使用,制作成具有Windows风格的窗口菜单。 但是当你采用上述三种菜单方式来制作具有Windows风格的窗口菜单时,常常会发生一些困扰,你必须在MenuItem的OnClick事件过程内编写程序代码,如果SpeedButton或PopupMenu执行的是同样的功能,那么为了不让程序重复,必须把SpeedButton或 PopupMenu的OnClick事件指向MenuItem的OnClick事件,如此一来,当应用程序的规模越来越大时,你将越不容易维护程序,因为程序与功能项目间的关系会变得很复杂,如果MenuItem中的名称起的不规范,就更不容易维护。用Delphi提供的ActionList组件,就可以解决上述扰人的问题,程序的写法是把所有的功能项目都声明在ActionList组件内,然后再把控制组件的Action属性或激活 事件(像OnClick、OnDblClick等)指向ActionList组件内的ActionItem,这时就可以在ActionList组件内统一管理所有的程序了。 下面结合一个具体的应用程序说明它的制作方法: 首先,在组件模板Standard页面上找到ActionList组件,把它拉到Form上,然后在它上面用鼠标双击打开ActionList编辑器,用 NewAction按钮或在左半边Categories按鼠标右键来建立一个ActionItem,然后根据不同的功能定义给与ActionItem具有特定意义 的名称,最后再把程序代码写在ActionItem的OnExecute事件过程内。接下来,根据应用程序的功能项目,一个一个地把ActionItem定义出来,然后编写实际的程序代码,这时候整个ActionList才算完成,像上面的应用程序Menu上有一个“出库单”功能选项,SpeedButton也有“出库单”功能按钮,这两件组件都有一个名为Action的属性,把此属性指向TActionList的Ckd项目,将会执行同一功能。这样一来,程序代码就很容易维护,而且程序的结构也变得更清楚。 程序代码如下:(部分) unit mainuni;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ExtCtrls, Buttons, Menus, StdCtrls, Grids, jpeg, ActnList, ImgList;typeTmainfrm = class(TForm)MainMenu1: TMainMenu;N1: TMenuItem;N2: TMenuItem;N3: TMenuItem;N4: TMenuItem;N5: TMenuItem;N6: TMenuItem;Panel1: TPanel;SpeedButton1: TSpeedButton;SpeedButton2: TSpeedButton;SpeedButton3: TSpeedButton;SpeedButton4: TSpeedButton;SpeedButton5: TSpeedButton;SpeedButton6: TSpeedButton;ActionList1: TActionList;gysda: TAction;rkd: TAction;ckd: TAction;djjz: TAction;ymjz: TAction;calc:TActionPopupMenu1: TPopupMenu;Image1: TImage;ImageList1: TImageList;procedure gysdaExecute(Sender: TObject);procedure ckdExecute(Sender: TObject);procedure djjzExecute(Sender: TObject);procedure ymjzExecute(Sender: TObject);procedure calcExecute(Sender: TObject);private Private declarations public Public declarations end;varmainfrm: Tmainfrm;implementationuses ckdauni, rdkuni, gysdauni, ymjzuni, djjzuni, dateuni ;$R *.DFMprocedure Tmainfrm.gysdaExecute(Sender: TObject);begingysdafrm.show;end;procedure Tmainfrm.rkdExecute(Sender: TObject);beginrkdfrm.show;end;procedure Tmainfrm.ckdExecute(Sender: TObject);beginckdfrm.show;end;procedure Tmainfrm.djjzExecute(Sender: TObject);begindjjzfrm.show;end;procedure Tmainfrm.ymjzExecute(Sender: TObject);beginymjzfrm.show;end;procedure Tmainfrm.calcExecute(Sender: TObject);varPasString:string;GamePath:array0.60 of char;ErrValue:integer;beginGetWindowsDirectory(Gamepath,Sizeof(gamePath);pasString:=strPas(GamePath);PasString:=pasString+/Calc;if not fileExists(pasString+.exe) thenbeginshowMessage(计算器程序没有安装!);exit;end;StrPCopy(Gamepath,pasString);ErrValue:=WinExec(Gamepath,SW_shownormal);if ErrValue32 thenshowMessage(程序运行出错!);end;end.除了可以自己定义TActionList的AcionItem之外,ActionList本身也提供了一些标准的AcionItem。主要分成三类:第一类是DataSet,这类的Action主要是执行数据表维护功能,像Next、Prior、Insert、Delete等。第二类是Edit功能,像 Copy、Cut、Psete等,这些功能主要是用在文字的输入编辑。最后一类是Windows功能,像Arrange、Cascade、 MinimizeAll等,可以把这些功能应用在MDI子窗口的管理。 另外,TActionList有一项非常特殊,也非常实用的特性,那就是在ActionList组件上有一个Images属性,这个属性主要的目的是用来和TImageList组件相连,可以根据每个Action的功能特性,找到对应的图标,然后把图标一个一个加到TImageList组件内,最后把 TImageList丢给TActionList,再把每个Action的ImageIndex属性根据图标的顺序设置正确的编号(由零开始算起)。如此一来每个Action都会有对应的图标,更重要的是可以把TMenu、TpopupMenu指向TActionList,这项特性使得我们不用对每个控制组件的每项功能去设置对应的图标,因为它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙消防安全培训课件
- 创造力的课件
- 化学品经营企业安全培训课件
- 化学品安全培训课件
- 16 麻雀第一课时 公开课一等奖创新教案
- 3 雨的四季 (共19张)+公开课一等奖创新教案
- 1《念奴娇-赤壁怀古》任务式公开课一等奖创新教案统编版高中语文必修上册
- 《小狗学叫》 说课稿
- 第9课《宇宙生命之谜》公开课一等奖创新教学设计 -统编版(五四学制)语文六年级上册
- 内河航运安全培训课件
- 快递业务流程标准化管理
- 中班健康魔法消气屋课件
- JJF 2267-2025场磨式大气电场仪校准规范
- 蓝莓水肥一体化栽培技术规程
- 【基于Creo的NGW型行星齿轮减速器设计9000字】
- DB64∕T 2023-2024 不动产登记操作指南
- 云南省云南师大附中2026届高考适应性月考卷地理及答案(一)
- oa数据安全管理制度
- 旋风除尘器设计选型
- 子宫纵膈微创治疗进展-洞察及研究
- 中医全科课件下载
评论
0/150
提交评论