mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-21 12:59:14 +02:00
LCL: implemented preferredsize for TScrollBar, bug #16855
git-svn-id: trunk@26635 -
This commit is contained in:
parent
724c4cb9aa
commit
22a192ff6e
@ -44,10 +44,6 @@ begin
|
|||||||
if (Parent=nil) and (not (cfAutoSizeNeeded in FControlFlags))
|
if (Parent=nil) and (not (cfAutoSizeNeeded in FControlFlags))
|
||||||
and (Self is TCustomForm) then begin
|
and (Self is TCustomForm) then begin
|
||||||
DebugLn(['TControl.Adjustsize ',DbgSName(Self)]);
|
DebugLn(['TControl.Adjustsize ',DbgSName(Self)]);
|
||||||
if Name='SearchResults' then begin
|
|
||||||
//debugln(GetStackTrace(true));
|
|
||||||
DebugLn(['TControl.Adjustsize AAA1']);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Include(FControlFlags, cfAutoSizeNeeded);
|
Include(FControlFlags, cfAutoSizeNeeded);
|
||||||
@ -4586,14 +4582,14 @@ begin
|
|||||||
// use defaults for undefined preferred size
|
// use defaults for undefined preferred size
|
||||||
if (PreferredWidth<0)
|
if (PreferredWidth<0)
|
||||||
or ((PreferredWidth=0) and (not (csAutoSize0x0 in ControlStyle))) then begin
|
or ((PreferredWidth=0) and (not (csAutoSize0x0 in ControlStyle))) then begin
|
||||||
if AutoSize then
|
if AutoSize or WidthIsAnchored then
|
||||||
PreferredWidth:=GetDefaultWidth
|
PreferredWidth:=GetDefaultWidth
|
||||||
else
|
else
|
||||||
PreferredWidth:=Width;
|
PreferredWidth:=Width;
|
||||||
end;
|
end;
|
||||||
if (PreferredHeight<0)
|
if (PreferredHeight<0)
|
||||||
or ((PreferredHeight=0) and (not (csAutoSize0x0 in ControlStyle))) then begin
|
or ((PreferredHeight=0) and (not (csAutoSize0x0 in ControlStyle))) then begin
|
||||||
if AutoSize then
|
if AutoSize or HeightIsAnchored then
|
||||||
PreferredHeight:=GetDefaultHeight
|
PreferredHeight:=GetDefaultHeight
|
||||||
else
|
else
|
||||||
PreferredHeight:=Height;
|
PreferredHeight:=Height;
|
||||||
|
@ -141,6 +141,17 @@ begin
|
|||||||
SetParams(APosition, AMin, AMax, FPageSize);
|
SetParams(APosition, AMin, AMax, FPageSize);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCustomScrollBar.CalculatePreferredSize(var PreferredWidth,
|
||||||
|
PreferredHeight: integer; WithThemeSpace: Boolean);
|
||||||
|
begin
|
||||||
|
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight,
|
||||||
|
WithThemeSpace);
|
||||||
|
if (Kind=sbHorizontal) and (PreferredHeight=0) then
|
||||||
|
PreferredHeight:=GetSystemMetrics(SM_CYHSCROLL);
|
||||||
|
if (Kind=sbVertical) and (PreferredWidth=0) then
|
||||||
|
PreferredWidth:=GetSystemMetrics(SM_CYVSCROLL);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCustomScrollBar.SetPosition(Value: Integer);
|
procedure TCustomScrollBar.SetPosition(Value: Integer);
|
||||||
begin
|
begin
|
||||||
SetParams(Value, FMin, FMax, FPageSize);
|
SetParams(Value, FMin, FMax, FPageSize);
|
||||||
|
@ -1085,7 +1085,7 @@ procedure TAutoSizeCtrlData.ComputePreferredClientArea(
|
|||||||
else if (ReferenceControl<>nil) and (ReferenceControl.Parent=Control) then
|
else if (ReferenceControl<>nil) and (ReferenceControl.Parent=Control) then
|
||||||
ChildData.Sides[a].CtrlData:=Children[ReferenceControl];
|
ChildData.Sides[a].CtrlData:=Children[ReferenceControl];
|
||||||
ChildData.Sides[a].Side:=ReferenceSide;
|
ChildData.Sides[a].Side:=ReferenceSide;
|
||||||
//if ChildData.Sides[a].CtrlData<>nil then DebugLn(['GetSideAnchor AAA1 Child=',DbgSName(Child),', a=',dbgs(a),' ReferenceControl=',DbgSName(ChildData.Sides[a].CtrlData.Control),' ReferenceSide=',dbgs(a,ChildData.Sides[a].Side)]);
|
//if ChildData.Sides[a].CtrlData<>nil then DebugLn(['GetSideAnchor Child=',DbgSName(Child),', a=',dbgs(a),' ReferenceControl=',DbgSName(ChildData.Sides[a].CtrlData.Control),' ReferenceSide=',dbgs(a,ChildData.Sides[a].Side)]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -3138,7 +3138,7 @@ begin
|
|||||||
|
|
||||||
if NeedAlignWork then
|
if NeedAlignWork then
|
||||||
begin
|
begin
|
||||||
//DebugLn(['TWinControl.AlignControls AAA1 ',DbgSName(Self),' RemainingClientRect=',dbgs(RemainingClientRect),' ',dbgs(ClientRect)]);
|
//DebugLn(['TWinControl.AlignControls ',DbgSName(Self),' RemainingClientRect=',dbgs(RemainingClientRect),' ',dbgs(ClientRect)]);
|
||||||
RemainingBorderSpace:=Rect(0,0,0,0);
|
RemainingBorderSpace:=Rect(0,0,0,0);
|
||||||
// adjust RemainingClientRect by ChildSizing properties
|
// adjust RemainingClientRect by ChildSizing properties
|
||||||
AdjustBorderSpace(RemainingClientRect,RemainingBorderSpace,
|
AdjustBorderSpace(RemainingClientRect,RemainingBorderSpace,
|
||||||
|
@ -96,6 +96,8 @@ type
|
|||||||
procedure CreateWnd; override;
|
procedure CreateWnd; override;
|
||||||
procedure Change; virtual;
|
procedure Change; virtual;
|
||||||
procedure Scroll(ScrollCode: TScrollCode; var ScrollPos: Integer); virtual;
|
procedure Scroll(ScrollCode: TScrollCode; var ScrollPos: Integer); virtual;
|
||||||
|
procedure CalculatePreferredSize(var PreferredWidth,
|
||||||
|
PreferredHeight: integer; WithThemeSpace: Boolean); override;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
procedure SetParams(APosition, AMin, AMax, APageSize: Integer);
|
procedure SetParams(APosition, AMin, AMax, APageSize: Integer);
|
||||||
|
Loading…
Reference in New Issue
Block a user