分享

用Delphi制作动态菜单

 instl 2012-03-18

所谓菜单是指菜单项随着的操作变化而变化。现在,我们用Delphi来实现这一功能,具体步骤

1.首先,确定菜单的数据,即要确定菜单标题是来自Windows的系统注册表,还是来自一个数据库,或者是来自一个子目录,主要由的功能而定。这里假设主窗口名为MainForm,上面已有主菜单,其菜单的数据源是一个String(字符串)类型的变量,名称为SubMenuItemSource。

2.确定生成的菜单的功能,即定义菜单的OnClick()事件,例如,菜单标题来自一个磁盘文件名时,那么在响应OnClick()事件时,可能的操作是要打开选中的文件。因此,对菜单所在的主窗口模块的单元的数,据我们需要定义Type后添加一个自定义的事件MyClick()。

然后,需要编写如下MyClick事件的具体内容:

procedure TMainForm.MyClick(Sender: TObject);//菜单OnClick事件响应

begin

Show.Message(TMenuItem(Sender).Caption);//显示选中的菜单标题,

end;

这里调用的ShowMessage标准例程(在Dialogs.pas中)显示TMenuItem(Sender).Caption,它就是选择的菜单项的Caption,类似用TMenuItem(Sender).Name则是选择菜单项的Name。

3.编写将菜单标题添加到指定的菜单顶下,并将其与OnClick()事件联系起来。将以下段添加到MainForm的OnCreate事件过程中,可在启动时完成菜单的生成:

procedure TMainForm.FormCreate(Sender: TObject);

var

addSubItem:TMenuItem;

i:Integer;

begin

for i:=0 to N do //N等于要添加的菜单数目,需事先定义为数值型变量,并赋值

begin

addSubItem:= TMenuItem.Create(Self);

addSubItem.Name := ′A′+IntToStr(i);

addSubItem.Caption := SubMenuItemSource; // 步骤1的SubMenuItemSource应先赋值

FileOpenItem.Add(addSubItem); //在名称为FileOpenItem的菜单项下添加子菜单

addSubItem.OnClick:=MyClick; // 步骤2的MyClick(),自定义菜单要响应的事件

end

end;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多