LCL: re-added CalculateAutoRanges for custom controls

git-svn-id: branches/fixes_1_4@48627 -
This commit is contained in:
mattias 2015-04-04 21:49:50 +00:00
parent 6860cefbbc
commit cc3c2e4bca
2 changed files with 22 additions and 15 deletions

View File

@ -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

View File

@ -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;