Am besten definierst du in der Komponente ein Event, das du auslöst, wenn der Status geändert wird.
z.B.
type
// Die möglichen Zustände deiner Komponente
TMyState = (msReady, msConnecting, msFailure);
TOnStateChanged = procedure (Sender: TObject; newState: TMyState) of object;
TMyComponent = class (TComponent)
private
FOnStateChanged: TOnStateChanged;
procedure DoOnStateChanged (newState: TMyState);
public
procedure DoSomething;
property OnStateChanged: TOnStateChanged read FOnStateChanged write FOnStateChanged;
end;
// Methode, die das Event aufruft
procedure TMyComponent.DoOnStateChanged (newState: TMyState);
begin
// Delphi Konvention
if assigned (FOnStateChanged) then
FOnStateChanged (newState);
end;
procedure TMyComponent.DoSomething;
begin
// send state changed event
DoOnStateChanged (msConnecting);
// do your communiction
Sleep(1000);
//
DoOnStateChanged (msReady);
end;