在复制文件的时候,如果不用多线程的话,主窗体在复制的过程中就无法移动什么的,请问创建线程显示进度。
请给出具体代码让我参考下,刚刚涉及线程编程,不懂的很多!请高手指教!

解决方案 »

  1.   

    请问怎么向线程中传递我要复制文件的路径呢?不用线程时我是用assignfile(sf,edit1.Text);实现的,用线程怎么实现呢?
      

  2.   

    可将要复制的文件路径存放到一个公共变量里,如果是多个文件名就放到一个TStringList里,然后在线程里访问这个公共变量
      

  3.   

    复制文件使用AssignFile?怎么不使用CopyFile一类的API?
      

  4.   

    把需要处理进度条窗口句柄传给线程,线程往该窗口句柄发送处理进度消息,在进度条窗口处理线程发送的Windows消息即可。
    thread
    const
      WM_DEAL_PROCESS = WM_USER+1;  PostMessage(hProcessForm,WM_DEAL_PROCESS,0,进度值);
    ...进度条窗口  private
        procedure OnDealProcess(var Msg:TMessage); Message WM_DEAL_PROCESS;...procedure TFmDealProcess.OnDealProcess(var Msg:TMessage);
    begin
      Progressbar.position = msg.LParam;
    end;