Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Wozu TNotifyEvent oder TEvent?

  Alt 13. Dez 2005, 08:32
Hi Arnulf,
es ist doch so, dass die Komponente völlig unabhängig von deiner Applikation agieren soll.
Also soll sie von einer ProgressBar gar nichts wissen. Kann ja sein, der Entwickler benutzt eine ganz andere, nicht von TProgressBar abgeleitete Komponente. Also soll er darüber informiert werden, wann die Progressbar neu gezeichnet werden soll.
Delphi-Quellcode:
unit Unit2;

interface
uses
  Classes;

type
  TMyVideoObject = class(TComponent)
  private
    FOnProgressBarPosChange: TNotifyEvent;
    FProgressBarPos: Integer;
    FProgressBarSteps: Integer;
    procedure doProgressBarPosChange;
  published
    // nur Lesen Property zum Setzen der PB
    property ProgressBarPos: Integer read FProgressBarPos;
    // Max - Wert der Progressbar, also - setze ich auf 100, so muss meine Komponente
    // das Ereignis insgesamt 100 mal auflösen
    property ProgressBarSteps: Integer read FProgressBarSteps write
        FProgressBarSteps;
    // mein Event, welches der Entwickler per OI setzen kann
    // damit er die PB weiter setzen kann
    property OnProgressBarPosChange: TNotifyEvent read FOnProgressBarPosChange
        write FOnProgressBarPosChange;
  end;

implementation

// du musst dafür sorgen, dass eben in sinnvollen bzw.
// entsprechend der Propertys eingestellten Schritten
// in deinem Code doProgressBarPosChange aufgerufen wird.
// und natürlich musst du FProgressBarPos auch setzen.
procedure TMyVideoObject.doProgressBarPosChange;
begin
  if Assigned(FOnProgressBarPosChange) then
    FOnProgressBarPosChange(Self);
end;

end.
Eine andere Alternative wäre, ein Published Property vom Typ TProgressBar.
Da kannst du dich dann um das setzten selbst kümmern.
Gruß, Frank
Frank Reim
  Mit Zitat antworten Zitat