diff --git a/docs/Contributors.txt b/docs/Contributors.txt index d5c4eee619..99beead2f7 100644 --- a/docs/Contributors.txt +++ b/docs/Contributors.txt @@ -66,6 +66,7 @@ Seppo Suutarla - finnish translation Sergio Marcelo Shane Miller Stefan Hille +Sean McIlwain Taras Boychuk Tom Lisjac Tomáš Gregorovič diff --git a/lcl/comctrls.pp b/lcl/comctrls.pp index 73abcd5373..5a996c4d7f 100644 --- a/lcl/comctrls.pp +++ b/lcl/comctrls.pp @@ -61,6 +61,9 @@ type { TStatusPanel } + //added. + TStatusPanelClass = class of TStatusPanel; + TStatusPanel = class(TCollectionItem) private FText: string; @@ -130,6 +133,12 @@ type procedure UpdateHandleObject(PanelIndex: integer); virtual; procedure CalculatePreferredSize( var PreferredWidth, PreferredHeight: integer); override; + + //added. + function CreatePanel: TStatusPanel; virtual; + function CreatePanels: TStatusPanels; virtual; + function GetPanelClass: TStatusPanelClass; virtual; + public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; diff --git a/lcl/include/statusbar.inc b/lcl/include/statusbar.inc index 447fb3e7ed..7dc597feea 100644 --- a/lcl/include/statusbar.inc +++ b/lcl/include/statusbar.inc @@ -25,7 +25,7 @@ begin TControlCanvas(FCanvas).Control := Self; ControlStyle := [csCaptureMouse, csClickEvents, csDoubleClicks, csOpaque]; FSimplePanel := True; - FPanels := TStatusPanels.Create(Self); + FPanels := CreatePanels; Color := clBtnFace; Anchors:=[akLeft,akRight,akBottom]; Align := alBottom; @@ -176,5 +176,31 @@ begin UpdateHandleObject(PanelIndex); end; +{------------------------------------------------------------------------------ + function TStatusBar.CreatePanel(): TStatusPanel; +------------------------------------------------------------------------------} +function TStatusBar.CreatePanel: TStatusPanel; +var + LClass: TStatusPanelClass; +begin + LClass := GetPanelClass; + Result := LClass.Create(Panels); +end; +{------------------------------------------------------------------------------ + function TStatusBar.CreatePanels(): TStatusPanels; +------------------------------------------------------------------------------} +function TStatusBar.CreatePanels: TStatusPanels; +begin + Result := TStatusPanels.Create(Self); +end; +{------------------------------------------------------------------------------ + function TStatusBar.GetPanelClass(): TStatusPanelClass; +------------------------------------------------------------------------------} +function TStatusBar.GetPanelClass: TStatusPanelClass; +begin + Result := TStatusPanel; +end; + + // included by comctrls.pp diff --git a/lcl/include/statuspanels.inc b/lcl/include/statuspanels.inc index da0f47677b..c9f1b7eae4 100644 --- a/lcl/include/statuspanels.inc +++ b/lcl/include/statuspanels.inc @@ -19,7 +19,7 @@ constructor TStatusPanels.Create(TheStatusBar: TStatusBar); begin - inherited Create(TStatusPanel); + inherited Create(TheStatusBar.GetPanelClass); FStatusBar := TheStatusBar; end;