ShellListView中如何删除选定的文件夹及它的子文件夹?

hjkto 2009-12-13 10:46:57
procedure TForm1.ShellListView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
T: TSHFileOpStruct;
begin
if key=32 then
begin
T.Wnd:=0;
T.wFunc:=FO_DELETE;
//T.fFlags := FOF_ALLOWUNDO+FOF_NOERRORUI+FOF_NORECURSION;
T.pFrom:=PChar(ShellListView1.selectedfolder.PathName);
if FileExists(ShellListView1.SelectedFolder.PathName) then
begin
DeleteFile(ShellListView1.selectedfolder.PathName);
ShellListView1.Refresh;
end

else
SHFileOperation(T);
end;
end;

上面的代码完不了,哪位帮改一下?
...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjkto 2009-12-13
  • 打赏
  • 举报
回复
上面的代码只能删除文件,删除文件夹报错?
自己顶一下
yumenyoudian 2009-12-13
  • 打赏
  • 举报
回复
var
T: TSHFileOpStruct;
begin
FillChar(T, Sizeof(T), 0);
T.Wnd:=0;
T.wFunc:=FO_DELETE;
T.fFlags :=FOF_NOCONFIRMATION;
T.fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR+FOF_NOERRORUI;
T.pFrom:=PChar(ShellListView1.selectedfolder.PathName + #0);
if FileExists(ShellListView1.SelectedFolder.PathName) then
begin
DeleteFile(ShellListView1.selectedfolder.PathName)
end else
SHFileOperation(T);
ShellListView1.Refresh;
end;
hjkto 2009-12-13
  • 打赏
  • 举报
回复
还是不行,谁能帮我改一下?
gyk120 2009-12-13
  • 打赏
  • 举报
回复
T.pFrom:=PChar(ShellListView1.selectedfolder.PathName+#0);
看了下MSDN,解释大致是这样的
TShFileOpStruct结构中的from和to路径都是可以使用多个文件名的,SHFileOperation函数判断一个文件名的结束是用#0为依据,如果光是这样的话,它就没法知道什么时候文件列表结束了,所以以两个#0作为整个列表的结束符。

1,183

社区成员

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

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