Você irá precisar de:
1* TGroupBox - Standard
1* TIDHTTP - Indy
1* TButton - Standard
2* TEdit - Standard
2* TLabel - Standard
Coloque os componentes como você desejar!
----
Códigooooo!!!
Adicione esta função após a declaração de DFM
function FileFromLink(Link:String):String;
var
i,p:integer;
Begin
for i:= length(Link) downto 0 do
if Link[i] = `/` then begin
p:= i;
Break;
end;
Result:= copy(Link, p+1, length(Link) );
end;
Esta função tem como objetivo, retornar o nome do arquivo de algum link da internet.
---
No Evento de OnClick do Button1, coloque o seguinte código:
procedure TForm1.Button1Click(Sender: TObject);
var
strm:TMemoryStream;
begin
try
strm:= TMemoryStream.Create;
button1.Enabled:=false;
with IdHTTP1 do begin
Get(edtLink.Text, STRM);
STRM.SaveToFile(edtDestino.Text + FileFromLink(edtLink.Text) );
Showmessage(`Terminado.`);
end;
finally
button1.Enabled:=True;
end;
end;
Aqui, ele chama o download, e depois que ele terminar ele salva de acordo com o local escolhido.
---
Agora no Evento OnWorkBegin do TIDHTTP1 Coloque o seguinte código:
procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
ProgressBar1.Max:= AWorkCountMax;
end;
Aqui, Ele define o tamanho máximo da barra de acordo com o tamanho do arquivo para download.
--
Agora no Evento OnWork do TIDHTTP1 Coloque o seguinte código:
procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
ProgressBar1.Position:= AWorkCount;
Caption:= inttostr(AWorkCount div 1024)+`KB de` +inttostr(ProgressBar1.Max div 1024)+`KB`;
end;
"a"
Aqui, Ele define a posição da barra de acordo com o que já foi baixado do arquivo para download.
Agora o programa baixando um arquivo de 1.1MB
Está pronto nosso baixador de arquivos.