Ich hab dir mal ein kleines Beispiel zusammengebastelt:
Delphi-Quellcode:
procedure TForm1.IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
ProgressBar1.Max := FileSizeByName('C:\DreamControls.chm');
ProgressBar1.Position := 0;
end;
procedure TForm1.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
ProgressBar1.Position := AWorkCount;
end;
procedure TForm1.IdSMTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
ProgressBar1.Position := 0;
end;
Normalerweise sollte man AWorkCountMax nehmen, um die Anzahl der zu übertragenden Bytes herauszufinden, aber
Zitat von
Die Indy-Hilfe:
AWorkCountMax indicates the maximum number of bytes expected for the operation sent to OnWorkBegin, or 0 when the number of bytes not known.
Leider ist das, was ich dort fett dargestellt habe, bei der Übertragung einer Message der Fall.
Wenn du es also genau machen willst, dann musst du dir die einzelnen Teile vornehmen und die Größe selber zusammenbasteln.