diff --git a/components/anchordocking/anchordocking.pas b/components/anchordocking/anchordocking.pas index 5dcba929af..1ed6ca6cd9 100644 --- a/components/anchordocking/anchordocking.pas +++ b/components/anchordocking/anchordocking.pas @@ -169,6 +169,7 @@ type TAnchorDockSplitter = class(TCustomSplitter) private + FCustomWidth: Boolean; FDockBounds: TRect; FDockParentClientSize: TSize; FDockRestoreBounds: TRect; @@ -178,6 +179,7 @@ type protected procedure SetResizeAnchor(const AValue: TAnchorKind); override; procedure PopupMenuPopup(Sender: TObject); virtual; + procedure Paint; override; public procedure MoveSplitter(Offset: integer); override; public @@ -193,6 +195,7 @@ type procedure SaveLayout(LayoutNode: TAnchorDockLayoutTreeNode); function HasOnlyOneSibling(Side: TAnchorKind; MinPos, MaxPos: integer): TControl; property DockRestoreBounds: TRect read FDockRestoreBounds write FDockRestoreBounds; + property CustomWidth: Boolean read FCustomWidth write FCustomWidth; end; TAnchorDockSplitterClass = class of TAnchorDockSplitter; @@ -2188,10 +2191,13 @@ begin for i:=0 to ComponentCount-1 do begin Splitter:=TAnchorDockSplitter(Components[i]); if not (Splitter is TAnchorDockSplitter) then continue; - if Splitter.ResizeAnchor in [akLeft,akRight] then - Splitter.Width:=SplitterWidth - else - Splitter.Height:=SplitterWidth; + if not Splitter.CustomWidth then + begin + if Splitter.ResizeAnchor in [akLeft,akRight] then + Splitter.Width:=SplitterWidth + else + Splitter.Height:=SplitterWidth; + end; end; OptionsChanged; end; @@ -6199,6 +6205,17 @@ begin UpdatePercentPosition; end; +procedure TAnchorDockSplitter.Paint; +begin + if Enabled then + inherited Paint + else + begin + Canvas.Brush.Color := clDefault; + Canvas.FillRect(ClientRect); + end; +end; + constructor TAnchorDockSplitter.Create(TheOwner: TComponent); begin inherited Create(TheOwner); diff --git a/components/anchordocking/design/registeranchordocking.pas b/components/anchordocking/design/registeranchordocking.pas index 8098395e90..8c7e37a240 100644 --- a/components/anchordocking/design/registeranchordocking.pas +++ b/components/anchordocking/design/registeranchordocking.pas @@ -270,6 +270,14 @@ begin Exit; Site.BoundSplitter.Enabled := not AAdjustHeight; + Site.BoundSplitter.CustomWidth := not Site.BoundSplitter.Enabled; + if Site.BoundSplitter.Enabled then + Site.BoundSplitter.Height := DockMaster.SplitterWidth + else + begin + Site.BoundSplitter.Constraints.MinHeight := 2; + Site.BoundSplitter.Height := Site.BoundSplitter.Constraints.MinHeight; + end; SiteNewHeight := Site.Parent.ClientHeight - ANewHeight - Site.BoundSplitter.Height; if AAdjustHeight and (Site.Height <> SiteNewHeight) then Site.Height := SiteNewHeight;