idftp를 사용해서 서버로 부터 화일을 다운받는 프로그램 작성중인데요..
서버의 특정폴더안에 있는 모든 화일을...검색해서
화일수만큼 루프를 돌며 다운을 받는 간단한 로직을 사용하였습니다.
문제는 다운받는 도중에 화면을 클릭한다거나..다른 응용프로그램으로 커서를 옮기면...멈춘다는 거죠..
먹통이 된다 이겁니다..
물론 idftp의 onWork이벤트에 "Application.ProcessMessages;"추가 해주었죠...
제 생각에 화일수만큼 루프를 돌다 멈추는거 같은데...
고수님의 생각은 어떤지요..? 해결책이 잇다면...?
<!--CodeS-->
procedure TForm2.bbtGetClick(Sender: TObject);
var
i : Integer;
begin
ProgressBar2.Position := 0;
DownTSize := 0;
FileSize := '';
for i := 0 to NameList.Count - 1 do begin
lblDownFile.Caption := NameList[i];
ProgressBar2.Max := StrToInt(SizeList[i]);
FileSize := (SizeList[i]);//다운받고 있는 화일의 크기
FTP.Get(NameList[i], 'c:\test\'+ NameList[i], true);
DownTSize := DownTSize + StrToInt(FileSize); //다운받은 화일들의 총 크기
end;
end;
procedure TForm2.FTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
Application.ProcessMessages;
ProgressBar1.Position := AWorkCount; // 전송중에 여기서 프로그래스바의 Position을 증가시킴
NowWork.Caption := '총 ' + IntToStr(trunc(TotalDSize/1024)) + 'KB 중 '
+ intToStr(trunc((DownTSize+AWorkCount)/1024))+'KB를 전송중입니다';
ProgressBar2.Position := AWorkCount;
end;
<!--CodeE-->