Wenn Du auch einen Integer und nicht nur ein Objekt übergen möchtest, musst Du zuerst einen eigenen Eventtyp definieren, z.b.:
Delphi-Quellcode:
TDdtProgressStatus = (TPSStart, TPSProgress, TPSEnd);
TDdtProgressEvent = procedure(Sender : TObject; Status: TDdtProgressStatus; Value : integer) of object;
Dann in einem Objekt definieren:
property OnFileProgress : TDdtProgressEvent read FOnFileProgress write FOnFileProgress;
Und dann kannst Du es aufrufen:
Delphi-Quellcode:
if Assigned(FOnFileProgress) then
FOnFileProgress(Self, TPSStart, nLines);
...
if Assigned(FOnFileProgress) then
FOnFileProgress(Self, TPSProgress, 1);
...
if Assigned(FOnFileProgress) then
FOnFileProgress(Self, TPSEnd, nLines);
Wenn Du die Klasse dann benutzt, definierst Du eine entsprechende Prozedur:
Delphi-Quellcode:
procedure TfrmMain.FileProgressEvent(Sender: TObject;
Status: TDdtProgressStatus; Value: integer);
begin
case Status of
TPSStart :
begin
// Meter-Anzeige aufbauen
frmWarten.Show;
frmWarten.btn.visible := false;
frmWarten.pgb.min := 0;
frmWarten.pgb.max := Value;
end;
TPSProgress :
begin
frmWarten.pgb.StepBy(Value);
end;
TPSEnd :
begin
frmWarten.pgb.Position := Value;
frmWarten.btn.caption := 'Fertig';
frmWarten.btn.visible := true;
frmWarten.btn.setfocus;
end;
end;
end;
... und weist diese dem Event zu:
FileObject.OnFileProgress := FileProgressEvent;