Så smid det i en tråd!!
type
THesteArbejde = class(TThread)
private
FURL: String;
FDest: String;
FOnComplete: TNotifyEvent;
protected
procedure Execute; override;
public
procedure Download(URL, Dest: String);
property OnComplete: TNotifyEvent read FOnComplete write FOnComplete;
end;
procedure THesteArbejde.Download(URL, Dest: String);
begin
FURL := URL;
FDest := Dest;
Resume;
end;
procedure THesteArbejde.Execute;
var
idh: TIdHTTP;
fs: TFileStream;
begin
idh := TIdHTTP.Create(nil);
fs := TFileStream.Create(FDest, fmCreate);
idh.Get(FURL, fs);
fs.Free;
idh.Free;
FOnComplete(Self);
Free;
end;
Så trykker du bare på en knap eller noget:
private
Hest: THesteArbejde;
public
procedure HestenSkalSove(Sender: TObject);
procedure TOverSuperHesteForm.MinPonyKnapTryk(Sender: TObject);
begin
Hest := THesteArbejde.Create(True);
Hest.OnComplete := HestenSkalSove;
Caption := 'Jeg er altså lige ved at hente, men du fortsætter bare dit arbejde!';
Hest.Download('
http://ebruger.dk/img/ebruger_logo.gif', ExtractFilePath(Application.ExeName) + 'hestefil.hest');
end;
procedure TOverSuperHesteForm.HestenSkalSove(Sender: TObject);
begin
Caption := 'Nu har jeg hestet færdigt!! God nat!!';
end;
Og alt det uden at starte Delphi... Det er sgu da meget godt klaret! :)
Til dem der brokker sig, ja jeg ved godt at man skal bruge Synchronize når man bruger Threads på VCL, men nu vil jeg snart i gang med mit hestePHP!!!
//hermandsen