procedure TForm1.FormShow(Sender: TObject);
begin
CopyFile(pChar('d:\Ewise41.rar'),pChar(ExtractFilePath(Application.ExeName) + 'ewsie4.rar'),true);
end;
这样执行文件是复制了,但是窗体没有在复制前显示出来,等复制完后再跳出来,这样的话客户端没看到窗体就不知道在复制,怎么让窗体显示出来

解决方案 »

  1.   

    加上Application.ProcessMessages,当然最好不要在show事件中写
      

  2.   

    procedure TForm1.FormShow(Sender: TObject);
    begin
    button1.Click;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    CopyFile(pChar('d:\Ewise41.rar'),pChar(ExtractFilePath(Application.ExeName) + 'ewsie4.rar'),true);
    application.ProcessMessages;
    end;
    还是没有用呀,这样把文件复制完后窗体才会显示,我希望是复制的时候窗体显示出来呀
      

  3.   

    用SHFileOperation来复制文件就可以看到进度窗口了(如果要复制的文件太小,可能会一闪而过)uses Shellapi;procedure TForm1.Button1Click(Sender: TObject);
    var
        op: TSHFILEOPSTRUCT;
        strFrom, strTo: String;
    begin
        ZeroMemory(@op, sizeof(op));
        strFrom := 'd:\Ewise41.rar';
        strTo := ExtractFilePath(Application.ExeName) + 'ewsie4.rar';
        op.Wnd := Handle;
        op.wFunc := FO_COPY; // FO_MOVE:移动, FO_COPY:拷贝, FO_DELETE:删除, FO_RENAME:更名
        op.pFrom := PChar(strFrom);
        op.pTo := PChar(strTo);    SHFileOperation(op);
    end;
      

  4.   

    晕,好像理解错楼主的需求了。重新回复一下。procedure TForm1.FormActivate(Sender: TObject);
    var
        dw: DWORD;
    begin
        Caption := '正在复制文件, 请稍候...';    dw := GetTickCount();
        while GetTickCount() - dw < 10 do
            Application.ProcessMessages;    CopyFile(pChar('d:\Ewise41.rar'),
                pChar(ExtractFilePath(Application.ExeName) + 'ewsie4.rar'),
                true);    Caption := '复制完成!';
    end;
      

  5.   

    高高手
    这个程序的关键在于事件应该在FormActivate中执行