diff --git a/lcl/comctrls.pp b/lcl/comctrls.pp index a414b656e9..d040567ff9 100644 --- a/lcl/comctrls.pp +++ b/lcl/comctrls.pp @@ -109,6 +109,8 @@ type property StatusBar: TStatusBar read FStatusBar; end; + TSBCreatePanelClassEvent = procedure(Sender: TStatusBar; + var PanelClass: TStatusPanelClass) of object; { TStatusBar } @@ -118,10 +120,11 @@ type FHandlePanelCount: integer; // realized panels in the Handle object FHandleObjectNeedsUpdate: boolean; FHandleUpdatePanelIndex: integer; // which panel in the handle object needs update + FOnCreatePanelClass: TSBCreatePanelClassEvent; FUpdateLock: integer; // set by BeginUpdate/EndUpdate - FPanels : TStatusPanels; - FSimpleText : String; - FSimplePanel : Boolean; + FPanels: TStatusPanels; + FSimpleText: String; + FSimplePanel: Boolean; FOnHint: TNotifyEvent; procedure SetPanels(Value: TStatusPanels); procedure SetSimpleText(const Value : String); @@ -140,7 +143,6 @@ type function CreatePanel: TStatusPanel; virtual; function CreatePanels: TStatusPanels; virtual; function GetPanelClass: TStatusPanelClass; virtual; - public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; @@ -161,6 +163,7 @@ type property Color default clBtnFace; property OnClick; property OnContextPopup; + property OnCreatePanelClass: TSBCreatePanelClassEvent read FOnCreatePanelClass write FOnCreatePanelClass; property OnDblClick; property OnDragDrop; property OnDragOver; diff --git a/lcl/include/statusbar.inc b/lcl/include/statusbar.inc index d49d568708..c30ab767f4 100644 --- a/lcl/include/statusbar.inc +++ b/lcl/include/statusbar.inc @@ -46,14 +46,14 @@ begin end; procedure TStatusBar.SetSimplePanel(Value : Boolean); -Begin +begin if FSimplePanel <> Value then - Begin + begin FSimplePanel := Value; //debugln('TStatusBar.SetSimplePanel FSimplePanel=',dbgs(FSimplePanel),' ',dbgsName(Self)); UpdateHandleObject(-1); end; -End; +end; procedure TStatusBar.SetPanels(Value: TStatusPanels); begin @@ -188,10 +188,12 @@ end; ------------------------------------------------------------------------------} function TStatusBar.CreatePanel: TStatusPanel; var - LClass: TStatusPanelClass; + AClass: TStatusPanelClass; begin - LClass := GetPanelClass; - Result := LClass.Create(Panels); + AClass := GetPanelClass; + if Assigned(FOnCreatePanelClass) then + OnCreatePanelClass(Self, AClass); + Result := AClass.Create(Panels); end; {------------------------------------------------------------------------------ function TStatusBar.CreatePanels(): TStatusPanels; @@ -208,5 +210,4 @@ begin Result := TStatusPanel; end; - // included by comctrls.pp