Okay, deklariere ein neues Ereignis vor der Deklartion der Klasse mit Deiner Routine:
Delphi-Quellcode:
type
TProgressInfo = procedure(Sender: TObject; Progress: Integer) of object;
Der Wert in
Progress übergibt dann den Fortschritt in z.B. Prozent.
In der Klasse mit der Routine definiere foldende Eigenschaft/Variable
Delphi-Quellcode:
type
TRoutineKlasse = class
private
FOnProgressInfo: TProgressInfo;
public
property OnProgressInfo: TOnProgressInfo read FOnProgressInfo write FOnProgressInfo;
end;
In Deiner Unterroutine fügst Du folgenden Aufruf ein:
Delphi-Quellcode:
...
if Assigned(FOnProgressInfo) then
FOnProgressInfo(Self, Fortschritt);
...
Wobei Fortschritt der darzustellende Wert ist. Nun zum Form, welches den Fortschritt darstellen soll. Definiere eine Funktion, welche aufgerufen wird, um den Fortschritt anzuzeigen
Delphi-Quellcode:
type
TMyForm = class(TForm)
private
procedure OnProgressInfo(Sender: TObject; Progress: Integer);
end;
Die Methode musst Du jetzt mit "Leben" füllen, z.B.
Delphi-Quellcode:
procedure TMyForm.OnProgressInfo(Sender: TObject; Progress: Integer);
begin
prgBar.Position := Progress;
Application.ProcessMessages;
end;
Jetzt noch die letzte Zeile. Diese musst Du einfügen, bevor Du die Unterroutine aufruft.
Delphi-Quellcode:
objRoutineKlasse.OnProgressInfo := OnProgressInfo;
objRoutineKlasse.DieUnterroutine;
...
...