mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-09 09:38:11 +02:00
LCL: re-added CalculateAutoRanges for custom controls
git-svn-id: trunk@48626 -
This commit is contained in:
parent
35e6eea991
commit
d51fa72c40
@ -157,6 +157,7 @@ type
|
|||||||
class procedure WSRegisterClass; override;
|
class procedure WSRegisterClass; override;
|
||||||
procedure AlignControls(AControl: TControl; var ARect: TRect); override;
|
procedure AlignControls(AControl: TControl; var ARect: TRect); override;
|
||||||
function AutoScrollEnabled: Boolean; virtual;
|
function AutoScrollEnabled: Boolean; virtual;
|
||||||
|
procedure CalculateAutoRanges; virtual;
|
||||||
procedure CreateWnd; override;
|
procedure CreateWnd; override;
|
||||||
function GetClientScrollOffset: TPoint; override;
|
function GetClientScrollOffset: TPoint; override;
|
||||||
function GetLogicalClientRect: TRect; override;// logical size of client area
|
function GetLogicalClientRect: TRect; override;// logical size of client area
|
||||||
|
@ -99,6 +99,26 @@ begin
|
|||||||
Result := not (AutoSize or (DockSite and UseDockManager));
|
Result := not (AutoSize or (DockSite and UseDockManager));
|
||||||
end;
|
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;
|
class function TScrollingWinControl.GetControlClassDefaultSize: TSize;
|
||||||
begin
|
begin
|
||||||
Result.CX := 150;
|
Result.CX := 150;
|
||||||
@ -171,22 +191,8 @@ procedure TScrollingWinControl.ComputeScrollbars;
|
|||||||
var
|
var
|
||||||
ClientW: Integer;
|
ClientW: Integer;
|
||||||
ClientH: Integer;
|
ClientH: Integer;
|
||||||
NeededClientW: Integer;
|
|
||||||
NeededClientH: Integer;
|
|
||||||
FrameWidth: integer;
|
|
||||||
FrameHeight: integer;
|
|
||||||
begin
|
begin
|
||||||
NeededClientW:=0;
|
CalculateAutoRanges;
|
||||||
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);
|
|
||||||
|
|
||||||
ClientW:=VertScrollBar.ClientSizeWithoutBar;
|
ClientW:=VertScrollBar.ClientSizeWithoutBar;
|
||||||
ClientH:=HorzScrollBar.ClientSizeWithoutBar;
|
ClientH:=HorzScrollBar.ClientSizeWithoutBar;
|
||||||
|
Loading…
Reference in New Issue
Block a user