LCL: implemented preferredsize for TScrollBar, bug #16855

git-svn-id: trunk@26635 -
This commit is contained in:
mattias 2010-07-14 07:37:30 +00:00
parent 724c4cb9aa
commit 22a192ff6e
4 changed files with 17 additions and 8 deletions

View File

@ -44,10 +44,6 @@ begin
if (Parent=nil) and (not (cfAutoSizeNeeded in FControlFlags))
and (Self is TCustomForm) then begin
DebugLn(['TControl.Adjustsize ',DbgSName(Self)]);
if Name='SearchResults' then begin
//debugln(GetStackTrace(true));
DebugLn(['TControl.Adjustsize AAA1']);
end;
end;
{$ENDIF}
Include(FControlFlags, cfAutoSizeNeeded);
@ -4586,14 +4582,14 @@ begin
// use defaults for undefined preferred size
if (PreferredWidth<0)
or ((PreferredWidth=0) and (not (csAutoSize0x0 in ControlStyle))) then begin
if AutoSize then
if AutoSize or WidthIsAnchored then
PreferredWidth:=GetDefaultWidth
else
PreferredWidth:=Width;
end;
if (PreferredHeight<0)
or ((PreferredHeight=0) and (not (csAutoSize0x0 in ControlStyle))) then begin
if AutoSize then
if AutoSize or HeightIsAnchored then
PreferredHeight:=GetDefaultHeight
else
PreferredHeight:=Height;

View File

@ -141,6 +141,17 @@ begin
SetParams(APosition, AMin, AMax, FPageSize);
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);
begin
SetParams(Value, FMin, FMax, FPageSize);

View File

@ -1085,7 +1085,7 @@ procedure TAutoSizeCtrlData.ComputePreferredClientArea(
else if (ReferenceControl<>nil) and (ReferenceControl.Parent=Control) then
ChildData.Sides[a].CtrlData:=Children[ReferenceControl];
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;
var
@ -3138,7 +3138,7 @@ begin
if NeedAlignWork then
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);
// adjust RemainingClientRect by ChildSizing properties
AdjustBorderSpace(RemainingClientRect,RemainingBorderSpace,

View File

@ -96,6 +96,8 @@ type
procedure CreateWnd; override;
procedure Change; virtual;
procedure Scroll(ScrollCode: TScrollCode; var ScrollPos: Integer); virtual;
procedure CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer; WithThemeSpace: Boolean); override;
public
constructor Create(AOwner: TComponent); override;
procedure SetParams(APosition, AMin, AMax, APageSize: Integer);