Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Wozu TNotifyEvent oder TEvent?

  Alt 13. Dez 2005, 10:05
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;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat