From 1483bd8c7494635cbf7881ec56530b3551aae1af Mon Sep 17 00:00:00 2001 From: graemeg Date: Wed, 4 Jun 2008 10:19:29 +0000 Subject: * Applied a patch from Luiz Americo which fixes some alignment issues inside TfpgPanel. * I implemented more alignment fixes for TfpgGroupBox and TfpgBevel. * I improved the painting of the focus rectangle it TfpgCheckBox and TfpgRadioButton. * UI Designer's Unknown widget can now act like a container component. --- src/corelib/gfx_widget.pas | 11 +++++++---- src/gui/gui_checkbox.pas | 2 +- src/gui/gui_panel.pas | 16 ++++++++++++++++ src/gui/gui_radiobutton.pas | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/gfx_widget.pas b/src/corelib/gfx_widget.pas index 9d569e66..9b99baa9 100644 --- a/src/corelib/gfx_widget.pas +++ b/src/corelib/gfx_widget.pas @@ -62,6 +62,7 @@ type FTextColor: TfpgColor; procedure SetBackgroundColor(const AValue: TfpgColor); virtual; procedure SetTextColor(const AValue: TfpgColor); virtual; + function GetClientBounds: TfpgRect; virtual; function GetParent: TfpgWidget; reintroduce; procedure SetParent(const AValue: TfpgWidget); reintroduce; procedure SetEnabled(const AValue: boolean); virtual; @@ -217,6 +218,11 @@ begin end; end; +function TfpgWidget.GetClientBounds: TfpgRect; +begin + Result.SetRect(0, 0, Width, Height); +end; + function TfpgWidget.GetParent: TfpgWidget; begin Result := TfpgWidget(inherited GetParent); @@ -909,10 +915,7 @@ var begin if (csLoading in ComponentState) then Exit; //==> - FAlignRect.Top := 0; - FAlignRect.Left := 0; - FAlignRect.Width := Width; - FAlignRect.Height := Height; + FAlignRect := GetClientBounds; DoAlign(alTop); DoAlign(alBottom); diff --git a/src/gui/gui_checkbox.pas b/src/gui/gui_checkbox.pas index 463ea405..f0013043 100644 --- a/src/gui/gui_checkbox.pas +++ b/src/gui/gui_checkbox.pas @@ -125,7 +125,7 @@ begin begin Canvas.SetColor(clText1); Canvas.SetLineStyle(1, lsDot); - Canvas.DrawRectangle(1, 1, Width-1, Height-1); + Canvas.DrawRectangle(1, 1, Width-2, Height-2); end; Canvas.SetLineStyle(1, lsSolid); diff --git a/src/gui/gui_panel.pas b/src/gui/gui_panel.pas index d25271a6..2e4280c5 100644 --- a/src/gui/gui_panel.pas +++ b/src/gui/gui_panel.pas @@ -38,11 +38,13 @@ type TPanelBorder = (bsSingle, bsDouble); + TfpgAbstractPanel = class(TfpgWidget) private FPanelShape: TPanelShape; FPanelStyle: TPanelStyle; FPanelBorder: TPanelBorder; + function GetClientBounds: TfpgRect; override; procedure SetPanelStyle(const AValue: TPanelStyle); procedure SetPanelBorder(const AValue: TPanelBorder); protected @@ -128,6 +130,7 @@ type procedure SetMargin(const AValue: integer); protected FFont: TfpgFont; + function GetClientBounds: TfpgRect; override; procedure HandlePaint; override; public constructor Create(AOwner: TComponent); override; @@ -205,6 +208,11 @@ end; {TfpgAbstractPanel} +function TfpgAbstractPanel.GetClientBounds: TfpgRect; +begin + Result.SetRect(2, 2, Width - 4, Height - 4); +end; + procedure TfpgAbstractPanel.SetPanelStyle(const AValue: TPanelStyle); begin if FPanelStyle <> AValue then @@ -538,6 +546,14 @@ begin end; end; +function TfpgGroupBox.GetClientBounds: TfpgRect; +var + h: integer; +begin + h := FFont.Height + 4; + Result.SetRect(2, h, Width - 4, Height - (h + 2)); +end; + procedure TfpgGroupBox.HandlePaint; var r: TfpgRect; diff --git a/src/gui/gui_radiobutton.pas b/src/gui/gui_radiobutton.pas index cf49365e..31e14656 100644 --- a/src/gui/gui_radiobutton.pas +++ b/src/gui/gui_radiobutton.pas @@ -175,7 +175,7 @@ begin begin Canvas.SetColor(clText1); Canvas.SetLineStyle(1, lsDot); - Canvas.DrawRectangle(1, 1, Width-1, Height-1); + Canvas.DrawRectangle(1, 1, Width-2, Height-2); end; Canvas.SetLineStyle(1, lsSolid); -- cgit v1.2.3-70-g09d2