谁帮我看看button下的语句该怎么写?糊涂两天了!(10分)

  • 主题发起人 主题发起人 del530
  • 开始时间 开始时间
D

del530

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个过程,文件复制的。
Procedure CopyDir(sou,sec:string);
Begin
{一个文件目录复制过程}
end;
procedure FlatButton1Click(Sender: TObject);
Begin
CopyDir('c:/program','d:/program');
{我这样使用,无法中断过程的执行,只有等过程序执行完之后才能做其他的事}
{有朋友说有BeginThread,命令行该怎么写?}
End;

 
对啊,用多线程,一个线程完成复制,另一个捕捉中断的命令。看看DELPHI的例子,或在论坛内
搜索吧,不少帖子的
 
在CopyDir中加入application.ProcessMessages;
 
用SHFileOperation可以用回调函数
 
在COPYDIR中加入了application.ProcessMessages任然不行!无法点其他的按钮!
 
没有人愿意帮我写一下吗?
 
application.ProcessMessages
这一句你加在什么地方啊?
应该加在递归循环中才行啊,而且做一个全局的标志,按了停止按钮后置
然后在递归循环中判断并停止
 
我说用SHFileOperation,可以在回调函数中控制,你不试一试。
 
to: jiangxiancheng
SHFileOperation是什么?
能不能给个例子?

 
procedure TForm1.Button1Click(Sender: TObject);
var
a: _SHFILEOPSTRUCTA;
begin
a.Wnd := Handle;
a.wFunc := FO_COPY;
a.pFrom := 'c:/a';
a.pTo := 'c:/b';
a.fFlags := FOF_ALLOWUNDO;
a.fAnyOperationsAborted := True;
a.lpszProgressTitle := 'asdfasdf';
a.hNameMappings := nil;
SHFileOperation(a);
end;
给分吧。
 
你可以利用多线程对象解决
//定义线程对象
Tinthread=class(Tthread)
private
protected
procedure execute;override;//重载
public
end;
定义了线程对象后,你就可以重载execute,最后在button下调用,
daoru是我定义的一个线程对象
daoru:=TinThread.Create(True);//创建而不执行
daoru.Resume;//执行
具体的执行程序你在execute中书写代码就可以!
 
接受答案了.
 
后退
顶部