delphi 动态创建菜单?

814123 2017-08-29 10:25:37
选择ListView里的某行数据,点击按钮,菜单栏自动添加以ListView名称的菜单。
并保存到数据库里,下次启动还有这个菜单,该怎么实现,麻烦给出代码参考?
...全文
260 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2017-08-31
  • 打赏
  • 举报
回复
一、动态菜单的基本代码

1.动态生成菜单项
var
FirstItem: TMenuItem;
SecondItem: TMenuItem;

begin
     FirstItem := TMenuItem.Create(Self);
     FirstItem.Caption := ‘FirstName’;
     PopupMenu1.Items.Add(FirstItem); //添加一级分类

     SecondItem := TMenuItem.Create(Self);
     SecondItem.Caption := ‘SecondName’;
     FirstItem.Add(SecondItem);       //添加二级分类

     ThirdItem := TMenuItem.Create(Self);
     ThirdItem.Caption := ‘ThirdName’;
     ThirdItem.OnClick := MenuClick;
     SecondItem.Add(ThirdItem);      //添加三级节点
end;

2.自定义动态菜单的事件
(1)定义事件函数
procedure TForm1.MenuClick(Sender: TObject);
var i: Integer;
begin
   ShowMessage(TMenuItem(Sender).Caption);
end;
(2)将自定义函数赋给菜单项
   FirstItem.OnClick := MenuClick;    //关键这句
二、要建立菜单的树型结构数据保存机制,因为菜单是树型结构的。它保存在LISTVIEW中,就是一个树型结构。 三、还得记录激发事件的机制。每个ListVIEW叶结节点,都一个事件相对应。 这样,仅靠LIstView.SaveToFile(FileName);是不行的。要保存它的树结构,还得保存它的事件机制。 建议使用XML,或Josn保存,ListView结构与事件。 这样软件启动时,读入ListView数据同时,并动态建立菜单和事件相对应,提供思路,仅供参考。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧