我的主界面有一个主菜单,mainmenu上面的项目都在主界面显示之前,从数据库的菜单表读出来的。我想做一个动态添加一个外部程序到主菜单的项目上的功能。也就是说,我可以选择磁盘上某个应用程序文件,然后指定在哪级菜单下添加项目。
以后我只要打开那个添加的菜单就可以打开相应的应用程序了。
要怎么做啊我看好些软件都这样子做了啊。这样子做的目的是为了在不改系统源代码的情况下,可以添加一些小功能。
以后我只要打开那个添加的菜单就可以打开相应的应用程序了。
要怎么做啊我看好些软件都这样子做了啊。这样子做的目的是为了在不改系统源代码的情况下,可以添加一些小功能。
解决方案 »
- xml的问题
- [一个人]结婚贴 散分纪念
- 数据感知组件如何显示记录集RecordsSet的数据
- 来深圳20天,简历发了5份,没人理
- 线程初学,点按钮,想要标题栏显示'线程运行了!'
- 关于paramcount。
- 谁用过Raize 3.06控件组?请教RzImageComboBox控件怎么用?
- 如何控制用户排他性登陆?来者有分,兄弟们给个思路
- 请问:你碰到过这样的query控件吗?
- 请问哪里有ACROBAT READER 的中文字体包下载?
- 用Delphi6开发的WebService服务端,怎么移植到IIS上?
- delphi 2007 的帮助文档为什么没有像Delphi 7里面的对Pos这种基础函数的解释?
读取显示的时候动态指定这个新菜单的执行事件 比如执行 shellexecute
Add_Menu : 实现 将你选择程序的路径、菜单名称等信息写入表中。
读取显示的时候动态指定这个新菜单的执行事件 比如执行 shellexecute???????????????????
主要是这个事件是不是要先在代码里写好,还是可以动态生成事件? 怎么样动态生成事件啊?
然后在事件中使用
winExec或者shellExecute不就可以了吗
在DefineMenuAction中实现调用外部程序,用shellExecute
然后绑定菜单事件 Menu1.onclick := DefineMenuAction;
begin
Winexec(Pchar(TMenuItem(Sender).Hint),1);
end;procedure TForm1.N2Click(Sender: TObject);
var
AItem :TMenuItem;
begin
if OpenDialog1.Execute then
begin
AItem :=TMenuItem.Create(self);
AItem.Caption :=ExtractFileName(OpenDialog1.FileName);
AItem.Hint := OpenDialog1.FileName;// 外部程序路径存放在Hint里了,根据需要你可以写配置文件或数据库
AItem.OnClick := DefaultAction;
N3.Add(AItem);
end;
end;
重新启动加载类似
你可以在16楼所说的添加后再写入ini文件,把路径保存起来,下一次再打开的时候就读取配置.
procedure TForm1.DefaultAction(Sender: TObject);
begin
Winexec(Pchar(TMenuItem(Sender).Hint),1);
end; procedure TForm1.N2Click(Sender: TObject);
var
AItem :TMenuItem;
ini:Tinifile;
begin
if OpenDialog1.Execute then
begin
AItem :=TMenuItem.Create(self);
AItem.Caption :=ExtractFileName(OpenDialog1.FileName);
AItem.Hint := OpenDialog1.FileName;// 外部程序路径存放在Hint里了,根据需要你可以写配置文件或数据库
AItem.OnClick := DefaultAction;
N3.Add(AItem);
ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+'Setup.ini');
ini.writestring('setup','n3',OpenDialog1.FileName) ;
ini.free;//这样就把配置保存起来了,下次再打开的时候再读取,再添加
end;
end;