Thema: Delphi Callback

Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#6
  Alt 25. Dez 2002, 21:04
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;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat