文件拷贝时的动画 ( 积分: 100 )

  • 主题发起人 主题发起人 爱如泣血
  • 开始时间 开始时间

爱如泣血

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi这么做像Windows文件拷贝时那样的动画界面。<br>请各位帮忙。。。
 
用Delphi这么做像Windows文件拷贝时那样的动画界面。<br>请各位帮忙。。。
 
在文件拷贝时播放动画!
 
对啊,在拷贝文件时,播放拷贝动画不就可以了吗!!!
 
procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>Animate1.Active:=true;<br>end;<br><br><br>在Animate1中放个gif的动画
 
用API函数SHFileOperation实现拷贝吧
 
type <br> &nbsp; &nbsp;_SHFILEOPSTRUCTA = packed record<br> &nbsp; &nbsp;Wnd: HWND;<br> &nbsp; &nbsp;wFunc: UINT;<br> &nbsp; &nbsp;pFrom: PAnsiChar;<br> &nbsp; &nbsp;pTo: PAnsiChar;<br> &nbsp; &nbsp;fFlags: FILEOP_FLAGS;<br> &nbsp; &nbsp;fAnyOperationsAborted: BOOL;<br> &nbsp; &nbsp;hNameMappings: Pointer;<br> &nbsp; &nbsp;lpszProgressTitle: PAnsiChar; { only used if FOF_SIMPLEPROGRESS }<br> &nbsp;end; <br>hwnd:用来显示操作状态的对话框句柄。 例中是form1的句柄<br>wFunc:执行的操作。可以是以下各值:(例中是FO_COPY)<br> &nbsp; &nbsp; &nbsp; &nbsp;FO_COPY:拷贝pfrom域中指定的(目录,例中是'c:/a')到pto中指定的位置(例中为'c:/b') <br> &nbsp; &nbsp; &nbsp; &nbsp;FO_DELET:删除pfrom中指定的文件. &nbsp; (pTo不用) <br> &nbsp; &nbsp; &nbsp; &nbsp;FO_MOVE:移动PFrom中指定的文件到pto中指定的位置。 &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp;FO_RENAME:给PFrom中指定的文件改名。<br>pFrom:指定一个或多个源文件名的缓冲区地址。多个名字必须用NULL分隔。名字列表必须用两个NULL(nil,'/0')来结束。<br>pTo:目标文件或目录名缓冲区地址。 如果fFlags域指定FOF_MULTIDESTFILES,缓冲区可以包含多个目标文件名。多个名字必须用NULL分隔。名字列表必须用两个NULL(nil,'/0')<br>fFlags :控制操作的标志,可以是以下各值组合:<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_ALLOWUNDO:保留Undo信息, 如果pFrom没有包含全的绝对的路径或文件名此值忽略。<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_CONFIRMMOUSE:没有实现.<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_FILESONLY:只有文件名使用通配符时(*.*)才对文件操作。<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_MULTIDESTFILES: &nbsp;pTo域指一定了多个目标文件.(一个对就一个源文件) 而不是指定一个目录来存放所有源文件 &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_NOCONFIRMATION:所有显示的对话框全部选择yes to all<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_NOCONFIRMMKDIR: 如果需要创建一个新目录不确认。<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_NOCOPYSECURITYATTRIBS: &nbsp;4.71. Microsoft&amp;reg; Windows NT&amp;reg; only. 安全属性不复制.<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_NOERRORUI:发生错误时不提供用户接口。<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_RENAMEONCOLLISION: &nbsp;move,copy,rename操作时如目标文件存在,给操作的文件另起一个名字。<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_SILENT:不显示进度对话框<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_SIMPLEPROGRESS:显示进度对话框但不显示文件名。<br> &nbsp; &nbsp; &nbsp; &nbsp;FOF_WANTMAPPINGHANDLE:如果指定了FOF_RENAMEONCOLLISION 当任何文件改名时将填写hNameMappings 域<br>fAnyOperationsAborted:当用户在完成前取消任何文件操作时赋值TRUE,否则FALSE.<br>hNameMappings:一个包含SHNAMEMAPPING结构数组的文件名映射对象句柄. 每一个(SHNAMEMAPPING)结构包括一个旧的或新的目录名为了每一个移动的复制的改名的文件。这个域仅在fFlags域包括FOF_WANTMAPPINGHANDLES标志时使用。句柄必须使用SHFreeNameMappings来释放(用完后)<br>lpszProgressTitle :进程对话框的标题串地址。仅在fFlags中包括FOF_SIMPLEPROGRESS标志时使用。<br><br>如果pFrom和pTo不是一个绝对目录时,当前目录从全局当前盘符和当前目录中取得,同时目录设置由GetCurrentDirectory 和SetCurrentDirectory 函数维护.<br><br>var<br> &nbsp;sPath: string;<br> &nbsp;fsTemp: SHFILEOPSTRUCT;<br> &nbsp;Flags: FILEOP_FLAGS;<br> &nbsp;i, t: integer;<br>begin<br> &nbsp;Flags := 0;<br> &nbsp;if FileListView.Items.Count &lt; 0 then<br> &nbsp; &nbsp;exit; /////////<br> &nbsp;sPath := bsSkinDirectoryEdit1.Text;<br> &nbsp;Flags := Flags + FOF_ALLOWUNDO;<br> &nbsp;Flags := Flags + FOF_RENAMEONCOLLISION;<br> &nbsp;Flags := Flags + FOF_SILENT;<br> &nbsp;Flags := Flags + FOF_NOCONFIRMMKDIR;<br> &nbsp;if sPath &lt;&gt; '' then<br> &nbsp;begin<br> &nbsp; &nbsp;try<br> &nbsp; &nbsp; &nbsp;fsTemp.Wnd := Self.Handle; //设置文件操作类型<br> &nbsp; &nbsp; &nbsp;fsTemp.wFunc := FO_COPY;<br> &nbsp; &nbsp; &nbsp;fsTemp.fFlags := Flags;<br> &nbsp; &nbsp; &nbsp;for i := 0 to FileListView.Items.Count - 1 do<br> &nbsp; &nbsp; &nbsp; &nbsp;//允许执行撤消操作 &nbsp; &nbsp; &nbsp;//////////<br> &nbsp; &nbsp; &nbsp;begin //源文件全路径名<br> &nbsp; &nbsp; &nbsp; &nbsp;fsTemp.pFrom := PChar(FileListView.Items.Item.Caption + #0#0);<br> &nbsp; &nbsp; &nbsp; &nbsp;fsTemp.pTo := PChar(sPath + #0#0); //要复制到的路径<br> &nbsp; &nbsp; &nbsp; &nbsp;fsTemp.lpszProgressTitle := '拷贝文件';<br> &nbsp; &nbsp; &nbsp; &nbsp;if SHFileOperation(fsTemp) &lt;&gt; 0 then<br> &nbsp; &nbsp; &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;statelbl.Caption := IntToStr(i) + '' + '文件复制不成功!';<br> &nbsp; &nbsp; &nbsp; &nbsp;end<br> &nbsp; &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;statelbl.Caption := IntToStr(i) + '' + '文件复制成功!';<br> &nbsp; &nbsp; &nbsp; &nbsp;end;<br> &nbsp; &nbsp; &nbsp;end;<br> &nbsp; &nbsp;except<br> &nbsp; &nbsp; &nbsp;MessageDlg('文件复制失败!', mtInformation, [mbYes], 0);<br> &nbsp; &nbsp;end;<br> &nbsp;end;<br>end;
 
Animate.CommonAVI设为aviCopyFile.
 
toapp2001<br> &nbsp; &nbsp; &nbsp; &nbsp; 请问这个拷贝函数自带动画吗?怎么我试了一下没有。改了Flags的值也没有。<br>还有这个动画是像Window拷贝文件时的吗?
 
多人接受答案了。
 
后退
顶部