From d51fa72c40f85cbbd6cb79feae3aa4819d6705bd Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 4 Apr 2015 21:49:29 +0000 Subject: [PATCH] LCL: re-added CalculateAutoRanges for custom controls git-svn-id: trunk@48626 - --- lcl/forms.pp | 1 + lcl/include/scrollingwincontrol.inc | 36 +++++++++++++++++------------ 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/lcl/forms.pp b/lcl/forms.pp index f5e7deb81e..a78ea9296c 100644 --- a/lcl/forms.pp +++ b/lcl/forms.pp @@ -157,6 +157,7 @@ type class procedure WSRegisterClass; override; procedure AlignControls(AControl: TControl; var ARect: TRect); override; function AutoScrollEnabled: Boolean; virtual; + procedure CalculateAutoRanges; virtual; procedure CreateWnd; override; function GetClientScrollOffset: TPoint; override; function GetLogicalClientRect: TRect; override;// logical size of client area diff --git a/lcl/include/scrollingwincontrol.inc b/lcl/include/scrollingwincontrol.inc index dd0ebfd97e..ba27c2fa2a 100644 --- a/lcl/include/scrollingwincontrol.inc +++ b/lcl/include/scrollingwincontrol.inc @@ -99,6 +99,26 @@ begin Result := not (AutoSize or (DockSite and UseDockManager)); end; +procedure TScrollingWinControl.CalculateAutoRanges; +var + NeededClientW: Integer; + NeededClientH: Integer; + FrameWidth: integer; + FrameHeight: integer; +begin + NeededClientW:=0; + NeededClientH:=0; + GetPreferredSize(NeededClientW,NeededClientH,true,false); + GetPreferredSizeClientFrame(FrameWidth,FrameHeight); + if NeededClientW>0 then + NeededClientW-=FrameWidth; + if NeededClientH>0 then + NeededClientH-=FrameHeight; + + HorzScrollBar.InternalSetRange(NeededClientW); + VertScrollBar.InternalSetRange(NeededClientH); +end; + class function TScrollingWinControl.GetControlClassDefaultSize: TSize; begin Result.CX := 150; @@ -171,22 +191,8 @@ procedure TScrollingWinControl.ComputeScrollbars; var ClientW: Integer; ClientH: Integer; - NeededClientW: Integer; - NeededClientH: Integer; - FrameWidth: integer; - FrameHeight: integer; begin - NeededClientW:=0; - NeededClientH:=0; - GetPreferredSize(NeededClientW,NeededClientH,true,false); - GetPreferredSizeClientFrame(FrameWidth,FrameHeight); - if NeededClientW>0 then - NeededClientW-=FrameWidth; - if NeededClientH>0 then - NeededClientH-=FrameHeight; - - HorzScrollBar.InternalSetRange(NeededClientW); - VertScrollBar.InternalSetRange(NeededClientH); + CalculateAutoRanges; ClientW:=VertScrollBar.ClientSizeWithoutBar; ClientH:=HorzScrollBar.ClientSizeWithoutBar;