diff options
author | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2007-07-24 14:23:24 +0000 |
---|---|---|
committer | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2007-07-24 14:23:24 +0000 |
commit | 7b306401872c09d5996a748ce1e4e8a90306e980 (patch) | |
tree | f2c6a225519b0e41d50b0fbcd728ecbebe4ae6df /src | |
parent | 8cede30bc7849a64720b7d34d7f3d3770489ca93 (diff) | |
download | fpGUI-7b306401872c09d5996a748ce1e4e8a90306e980.tar.xz |
* Fixed a minor repaint bug in TfpgLabel and AutoSize. If text was set
to something smaller, old text still remained on the canvas.
* Implemented a new TfpgBevel widget
* Added a example project showing the features of the TfpgBevel.
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/fpgui_package.lpk | 8 | ||||
-rw-r--r-- | src/gui/fpgui_package.pas | 2 | ||||
-rw-r--r-- | src/gui/gui_bevel.pas | 126 | ||||
-rw-r--r-- | src/gui/gui_label.pas | 1 |
4 files changed, 134 insertions, 3 deletions
diff --git a/src/gui/fpgui_package.lpk b/src/gui/fpgui_package.lpk index ea9896d3..5ad6031a 100644 --- a/src/gui/fpgui_package.lpk +++ b/src/gui/fpgui_package.lpk @@ -6,7 +6,7 @@ <CompilerOptions> <Version Value="5"/> <SearchPaths> - <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> <CodeGeneration> <Generate Value="Faster"/> @@ -18,7 +18,7 @@ <Description Value="fpGUI - multi-handle redesign"/> <License Value="Modified LGPL"/> <Version Minor="5"/> - <Files Count="10"> + <Files Count="11"> <Item1> <Filename Value="gui_button.pas"/> <UnitName Value="gui_button"/> @@ -59,6 +59,10 @@ <Filename Value="gui_scrollbar.pas"/> <UnitName Value="gui_scrollbar"/> </Item10> + <Item11> + <Filename Value="gui_bevel.pas"/> + <UnitName Value="gui_bevel"/> + </Item11> </Files> <RequiredPkgs Count="2"> <Item1> diff --git a/src/gui/fpgui_package.pas b/src/gui/fpgui_package.pas index dcdc16ba..a6b53cdc 100644 --- a/src/gui/fpgui_package.pas +++ b/src/gui/fpgui_package.pas @@ -8,7 +8,7 @@ interface uses gui_button, gui_combobox, gui_dialogs, gui_edit, gui_form, gui_label, - gui_listbox, gui_memo, gui_popupwindow, gui_scrollbar; + gui_listbox, gui_memo, gui_popupwindow, gui_scrollbar, gui_bevel; implementation diff --git a/src/gui/gui_bevel.pas b/src/gui/gui_bevel.pas new file mode 100644 index 00000000..d531fde0 --- /dev/null +++ b/src/gui/gui_bevel.pas @@ -0,0 +1,126 @@ +unit gui_bevel; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, + SysUtils, + fpgfx, + gfxbase, + gfx_widget; + +type + + TBevelShape = (bsBox, bsFrame, bsTopLine, bsBottomLine, bsLeftLine, bsRightLine, bsSpacer); + + TBevelStyle = (bsLowered, bsRaised); + + + TfpgBevel = class(TfpgWidget) + private + FBevelShape: TBevelShape; + FBevelStyle: TBevelStyle; + procedure SetBevelShape(const AValue: TBevelShape); + procedure SetBevelStyle(const AValue: TBevelStyle); + protected + procedure HandlePaint; override; + public + constructor Create(AOwner: TComponent); override; + published + property Shape: TBevelShape read FBevelShape write SetBevelShape default bsBox; + property Style: TBevelStyle read FBevelStyle write SetBevelStyle default bsRaised; + end; + + +function CreateBevel(AOwner: TComponent; ALeft, ATop, AWidth, AHeight: TfpgCoord; + AShape: TBevelShape; AStyle: TBevelStyle): TfpgBevel; + + +implementation + + +function CreateBevel(AOwner: TComponent; ALeft, ATop, AWidth, + AHeight: TfpgCoord; AShape: TBevelShape; AStyle: TBevelStyle): TfpgBevel; +begin + Result := TfpgBevel.Create(AOwner); + Result.Left := ALeft; + Result.Top := ATop; + Result.Width := AWidth; + Result.Height := AHeight; + Result.Shape := AShape; + Result.Style := AStyle; +end; + +{ TfpgBevel } + +procedure TfpgBevel.SetBevelShape(const AValue: TBevelShape); +begin + if FBevelShape = AValue then + Exit; //==> + FBevelShape := AValue; + Repaint; +end; + +procedure TfpgBevel.SetBevelStyle(const AValue: TBevelStyle); +begin + if FBevelStyle = AValue then + Exit; //==> + FBevelStyle := AValue; + Repaint; +end; + +procedure TfpgBevel.HandlePaint; +begin + Canvas.BeginDraw; + inherited HandlePaint; + Canvas.Clear(clWindowBackground); + + Canvas.SetLineStyle(2, lsSolid); + Canvas.SetColor(clWindowBackground); + Canvas.DrawRectangle(1, 1, Width - 1, Height - 1); + Canvas.SetLineStyle(1, lsSolid); + + if Style = bsRaised then + Canvas.SetColor(clHilite2) + else + Canvas.SetColor(clShadow2); + + if Shape in [bsBox, bsFrame, bsTopLine] then + Canvas.DrawLine(0, 0, Width - 1, 0); + if Shape in [bsBox, bsFrame, bsLeftLine] then + Canvas.DrawLine(0, 1, 0, Height - 1); + if Shape in [bsFrame, bsRightLine] then + Canvas.DrawLine(Width - 2, 1, Width - 2, Height - 1); + if Shape in [bsFrame, bsBottomLine] then + Canvas.DrawLine(1, Height - 2, Width - 1, Height - 2); + + if Style = bsRaised then + Canvas.SetColor(clShadow2) + else + Canvas.SetColor(clHilite2); + + if Shape in [bsFrame, bsTopLine] then + Canvas.DrawLine(1, 1, Width - 2, 1); + if Shape in [bsFrame, bsLeftLine] then + Canvas.DrawLine(1, 2, 1, Height - 2); + if Shape in [bsBox, bsFrame, bsRightLine] then + Canvas.DrawLine(Width - 1, 0, Width - 1, Height - 1); + if Shape in [bsBox, bsFrame, bsBottomLine] then + Canvas.DrawLine(0, Height - 1, Width, Height - 1); + + Canvas.EndDraw; +end; + +constructor TfpgBevel.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FBevelShape := bsBox; + FBevelStyle := bsRaised; + FWidth := 80; + FHeight := 80; +end; + +end. + diff --git a/src/gui/gui_label.pas b/src/gui/gui_label.pas index 9e51b780..ea635be0 100644 --- a/src/gui/gui_label.pas +++ b/src/gui/gui_label.pas @@ -115,6 +115,7 @@ procedure TfpgLabel.ResizeLabel; begin Width := FFont.TextWidth(FText); Height := FFont.Height; + UpdateWindowPosition; end; constructor TfpgLabel.Create(AOwner: TComponent); |