菜单的name,caption以及单击菜单所要所要打开的窗体名字存在数据库中,怎幺动态生成菜单,并产生菜单单击事件?(要通用的,我不想为每一个菜单都写一个单击事件)
解决方案 »
- 求解:我这样写代码正确么>?
- 线程问题
- to : Internetroot 领分发的DBGridToExcel控件,,,
- 数据下载的问题(请多多指教)
- 怎样在IE右键中添加菜单项,单击后调用我的程序!
- d7一个我很挠头的问题
- 关于加拿大cashcode纸币器操作问题,请大家提意见
- zswang-xgto技术交流(3)
- .....................................................让您体验高速驰骋的快感...........................................
- 拥有个人主页的同志,希望能帮一下我!
- 有没有办法在一个基类FORM中用RegisterClass注册这个FORM,然后所有继承这个FROM的FROM都会自己注册?
- 删除文件夹问题?
private
{ Private declarations }
procedure MenuClick(Sender: TObject);procedure TForm1.Button2Click(Sender: TObject);
var
Menu1:TMenuItem;
begin
Menu1 := TMenuItem.Create(Self);
Menu1.Name := 'MFile';
Menu1.Caption := '&File';
MainMenu1.Items.Add(Menu1); //Create some menu items at File's menu
Menu1 := TMenuItem.Create(Self);
Menu1.Name := 'MShow';
Menu1.Caption := '&Show';
Menu1.OnClick := MenuClick;
MainMenu1.Items[0].Add(Menu1); Menu1 := TMenuItem.Create(Self);
Menu1.Name := 'MExit';
Menu1.Caption := '&Exit';
Menu1.OnClick := MenuClick;
MainMenu1.Items[0].Add(Menu1);
end;
procedure TForm1.MenuClick(Sender: TObject);
begin
if TMenuItem(Sender).Name = 'MShow' then
begin
ShowMessage('Hello Menu');
end
else if TMenuItem(Sender).Name = 'MExit' then
begin
Close;
end;
end;
.......
procedure AddWindowsMenu(MenuCap: string; bEnabled: boolean);
procedure AddMenuClick(Sender: TObject);
procedure TForm1.AddWindowsMenu(MenuCap: string; bEnabled: boolean);
var
NewItem: TMenuItem;
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption:='NewMenuCaption'; //你数据库里的Caption
NewItem.Enabled:= bEnabled;
Form1.MenuGroup.Add(NewItem);
NewItem.OnClick:= AddMenuClick;
end;procedure TForm1.AddMenuClick(Sender: TObject);
//动态菜单点击事件
begin
with Sender as TMenuItem do
begin
ShowMessage(Caption); //模拟事件处理
end;
end;procedure TForm1.Button1Click(Sender: TObject); //调用....
begin
AddWindowsMenu('NewItem',True);
end;