SpeedButton;
ActionList1: TActionList;
gysda: TAction;
rkd: TAction;
ckd: TAction;
djjz: TAction;
ymjz: TAction;
calc:TAction
PopupMenu1: 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;
var
mainfrm: Tmainfrm;
implementation
uses ckdauni, rdkuni, gysdauni, ymjzuni, djjzuni, dateuni ;
{$R *.DFM}
procedure Tmainfrm.gysdaExecute(Sender: TObject);
begin
gysdafrm.show;
end;
procedure Tmainfrm.rkdExecute(Sender: TObject);
begin
rkdfrm.show;
end;
procedure Tmainfrm.ckdExecute(Sender: TObject);
begin
ckdfrm.show;
end;
procedure Tmainfrm.djjzExecute(Sender: TObject);
begin
djjzfrm.show;
end;
procedure Tmainfrm.ymjzExecute(Sender: TObject);
begin
ymjzfrm.show;
end;
procedure Tmainfrm.calcExecute(Sender: TObject);
var
PasString:string;
GamePath:array[0..60] of char;
ErrValue:integer;
begin
GetWindowsDirectory(Gamepath,Sizeof(gamePath));
pasString:=strPas(GamePath);
PasString:=pasString+''\Calc'';
if not fileExists(pasString+''.exe'') then
begin
showMessage(''计算器
程序没有安装!'');
exit;
end;
StrPCopy(Gamepath,pasString);
ErrValue:=WinExec(Gamepath,SW_shownormal);
if ErrValue<32 then
showMessage(''
程序运行出错!'');
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,这项特性使得我们不用对每个控制组件的每项功能去设置对应的图标,因为它们会自动对应到TActionList设置的图标,这项特性大大减轻了
程序设计工作量。
从以上所讲示例及功能可以看出,采用ActionList组件来编制菜单程序,不但可以大幅减少自行编写的程序代码,而且这些Action都集中在同一组件上,使得程序的维护及管理变得即方便又清楚。