怎么给动态创建的菜单的单击事件赋值!在线急等!答对马上给分! ( 积分: 30 )

  • 主题发起人 主题发起人 李翔鹏
  • 开始时间 开始时间

李翔鹏

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把一个LISTBOX中的多个EXE文件中加入到右键菜单(动态添加),并且单击相应的EXE文件则可以执行该程序(添加动态生成的菜单的单击事件).在线急等,必须要详细正确的.答对马上给分!
 
我想把一个LISTBOX中的多个EXE文件中加入到右键菜单(动态添加),并且单击相应的EXE文件则可以执行该程序(添加动态生成的菜单的单击事件).在线急等,必须要详细正确的.答对马上给分!
 
创建;
N1.OnClick := MyMenuClick;
 
TO:XIANGUO
你说的我也知道,关键是我赋值后所有的右键菜单调用的都是一个EXE文件了,即最后一个EXE文件,谁能给出详细的代码,或者指点一下思路.
 
for iC:=0 to FslImageFile.Count-1 do
begin
mTmp:=TMenuItem.Create(self);
mTmp.Name :='mm'+inttostr(iC);
mTmp.Caption :=FslImageFile.Strings[iC];
if FslImageFile.Strings[iC]=ConstClass._sBackGround then
mTmp.Checked :=True;
mTmp.OnClick := ExecuteBackGroundMenuClick;
mShowBackGrd.Add(mTmp);
end;
 
根据菜单名来判断啊,动态生成菜单的时候菜单名跟某个exe文件对应起来
 
procedure ApplstMuClk
exec..(caption+'.exe')//执行程序

for i:=0 to lst.items.count-1 do
with menu.items.add(menuitem.create(self)) do
begin
caption:=lst
onclick:=applstmuclk;
end;

不行,你打我
 
procedure ApplstMuClk(sender: Tobject)
exec..(Tmenuitem(sender).caption+'.exe')//执行程序

补充一下哈
 
不行阿,单击没有反应阿
 
如果动态添加的菜单载入的EXE文件已经是全路径+文件名了,在单击事件中使用以下代码。
WinExec(PChar((Sender as TMenuItem).Caption),SW_SHOWNORMAL);
 
按楼上说的单击后没有反应.注意是生成了多个菜单项!
 
你的listbox里的exe文件是全路径的吗?

如果是就试试下面的,如果不是就先找到全路径
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;

type
TForm1 = class(TForm)
ListBox1: TListBox;
PopupMenu1: TPopupMenu;
procedure menuclick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
exes:array of string;
implementation

{$R *.dfm}

procedure TForm1.menuclick(Sender: TObject);
begin
WinExec(PChar(exes[Tmenuitem(sender).Tag]),SW_SHOWNORMAL);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
item:Tmenuitem;
begin
PopupMenu1.Items.Clear;
setlength(exes,listbox1.Items.Count);
for i:=0 to listbox1.Items.Count-1 do
begin
exes:=listbox1.Items.Strings;
item:=Tmenuitem.Create(self);
item.Caption:=ExtractFileName(listbox1.Items.Strings);
item.Tag:=i;
item.OnClick:=menuclick;
PopupMenu1.Items.Add(item);
end;
end;

end.
 
接受答案了.
 
$#@%&*^^%**&^%%^&^
 
后退
顶部