在用SHFileOperation删除文件时,提示是否删除到回收站,如何知道是点击了“是”或“否”呢?(300分)

  • 主题发起人 主题发起人 omvm
  • 开始时间 开始时间
O

omvm

Unregistered / Unconfirmed
GUEST, unregistred user!
同样的,用SHFileOperation复制文件或重命名文件或文件夹时,如何对提示框作出反应呢,
或者说,如何知道用户点击了哪个按键?
 
判断ShFileOperation的返回值是否为0,为0表示成功,否则失败。
难道这个不行吗?
 
呵呵,这个可以,那个是否返回0,返回0表示操作正常,非0表示出现错误。
而fAnyOperationsAborted标志是否有取消操作出现,呵呵。
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
F: TShFileOpStruct;
l_FileName: Array[0..128] of Char;
begin
F.Wnd := Handle;
F.wFunc := FO_DELETE; {操作方式}
l_FileName := 'D:/SQL.EXE';
F.pFrom := l_FileName;
F.fFlags := FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;

if ShFileOperation(F) = 0 then
ShowMessage('执行完成')
else
ShowMessage('执行失败');
{看下面这个}
if F.fAnyOperationsAborted = True then
ShowMessage('没有取消')
else
ShowMessage('用户取消了')
end;
 
不行,返回值只是说明SHFileOperation是否执行成功
 
对了,你还可以不让系统出现这个对话框。
设置那个fFlags为FOF_SILENT,还可以让它出现但是没有确认取消按钮,好像是FOF_NOCONFIRMATION,
看一下SDK的帮助,都有的。
 
是吗,我试试,果然是的,不过上面的操作反了,
if F.fAnyOperationsAborted = True then
ShowMessage('用户取消了')
else
ShowMessage('没有取消');
其他的操作呢?有的对话框会有四种选择啊?期待中……
 
呵呵,确实写烦了,没错。
 
啊?什么对话框有四种选择?
譬如说:
 
四种操作,如果存在一个取消,那么它就是取消了,看下面。
没有明确的标志是点击哪一个按钮导致的。
fAnyOperationsAborted
Value that receives TRUE if the user aborted any file operations before they were completed or FALSE otherwise.
 
比如说,文件夹替换操作,
会有四种选择:“是”、“全部”、“否”、“取消”。如果说“否”和“取消”都被认定
是取消了,哪我如何区分“是”和“全部”呢?,知道按下“是”后最后我如何能知道哪个
文件被替换了,哪个没有被替换呢?
谢谢赐教!
 
这个就没有了,刚才仔细看了一下sdk帮助,没找到[:(]
如果你要用户选择,你一般就没有必要知道结果,如果想知道结果,不妨就不让用户干预,不弹出这些对话框。
 
我记得在资源管理器中,多个文件复制或移动操作是如果按下“是”的话,它就只要有相同
的文件,就会让你确认一下,而如果是按下“全部”的话,就不会你每一项都确认。
 
不过这样也是得到了答案,谢谢yzhshi。
如果还有后面两种情况的答案,发给我:mailto:omvm@sina.com 我会另开贴子给分的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部