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