如何让右键菜单popumenup显示c:/ddd的所有文件;并有相对应的事件(25分)

  • 主题发起人 主题发起人 laohe
  • 开始时间 开始时间
L

laohe

Unregistered / Unconfirmed
GUEST, unregistred user!
让右键菜单popumenup显示c:/ddd的所有文件;点击菜单中的某一项时打开对应的文件?
 
用FindFirst, FindNext, FindClose取得指定目录的所有文件列表
然后把文件列表加入菜单,执行菜单命令即用相应的API ShellExecute或CreateProcess
打开对应的文件即可。
 
,加入菜单?怎么加
 
这种小问题你就多找一找Delphi的帮助吧
Delphi帮助中的示例:

var
NewItem: TMenuItem;
I : integer;
begin
{ first create the separator }
NewItem := TMenuItem.Create(Self);
NewItem.Caption := '-';
{ add the new item to the Windows menu }
Windows.Add(NewItem);
{ now create and add a menu item for each form }
for I := 0 to Screen.FormCount-1 do
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption := Screen.Forms.Name;
Windows.Add(NewItem);

end;

end;
 
你可以在你软件放一个popupmenu组件,将它的内容置空,在新建newitem!
var
newitem:Tnewitem;
i:integer;
begin
for i:=0 to item.count-1 do
begin
newitem:=Tnewitem.create(popupmenu);
popupmenu.items.add(newitem);
newitem.caption:='';
end;
end;
动态建立,然后在遍历你要目录中的文件名称,再加到里面就可以!
 
同意楼上
 
给分吧。
procedure Tform1.SearchFile(aPath:String);//搜索并添加菜单
var
aRec: TSearchRec;
NewItem: TMenuItem;
begin
try
if FindFirst(aPath, faDirectory,aRec) = 0 then
begin
if (aRec.Attr > 0) and (aRec.Name <>'.') and (aRec.Name <>'..') and (aRec.Attr <> faDirectory) then
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption := aRec.Name;
NewItem.OnClick := DynamicMenuClick;//动态添加菜单的Click事件
PopupMenu1.Items.Add(NewItem);
end;
end;
while FindNext(aRec) = 0 do
if (aRec.Attr > 0) and (aRec.Name <>'.') and (aRec.Name <>'..') and (aRec.Attr <> faDirectory)then
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption := aRec.Name;
NewItem.OnClick := DynamicMenuClick;
PopupMenu1.Items.Add(NewItem);
end;
finally
FindClose(aRec);
end;
Application.ProcessMessages;
end;
procedure Tform1.DynamicMenuClick(sender :TObject);;//动态添加菜单的Click事件
begin
showmessage((Sender as TMenuItem).Caption );

end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SearchFile('c:/*.*');
end;
 
Bigroute:大侠你好

DynamicMenuClick不能通过,出错!

我是delphi6,能不能再帮我看看,谢谢
 
在前面声名该过程即可
 
type
TForm1 = class(TForm)
procedure DynamicMenuClick(sender :TObject);加上就可以用了
private



 

NewItem := TMenuItem.Create(Self);
NewItem.Caption := aRec.Name;

中self出错;我改为newitem,最后运行后self没有反应,
 
兄弟给分吧,那段程序我调过不会出错的。
 
谢谢支持,少少分数请笑纳,
 
后退
顶部