diff --git a/.gitattributes b/.gitattributes index 325c8b872e..f164495ca6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1026,6 +1026,14 @@ components/customdrawn/customdrawnimages/build.bat svneol=native#text/plain components/customdrawn/customdrawnimages/windows7.res -text components/customdrawn/customdrawnimages/windows7_button.bmp -text components/customdrawn/customdrawnlcldrawers.pas svneol=native#text/plain +components/customdrawn/examples/controls/cdcontrolstest.ico -text +components/customdrawn/examples/controls/cdcontrolstest.lpi svneol=native#text/plain +components/customdrawn/examples/controls/cdcontrolstest.lpr svneol=native#text/plain +components/customdrawn/examples/controls/cdcontrolstest.res -text +components/customdrawn/examples/controls/mainform.lfm svneol=native#text/plain +components/customdrawn/examples/controls/mainform.pas svneol=native#text/plain +components/customdrawn/examples/controls/toolbartest.lfm svneol=native#text/plain +components/customdrawn/examples/controls/toolbartest.pas svneol=native#text/plain components/customdrawn/paletteimg.res -text components/customdrawn/resources/build.bat svneol=native#text/pascal components/customdrawn/resources/paletteimg.txt svneol=native#text/pascal diff --git a/components/customdrawn/examples/controls/cdcontrolstest.ico b/components/customdrawn/examples/controls/cdcontrolstest.ico new file mode 100644 index 0000000000..0341321b5d Binary files /dev/null and b/components/customdrawn/examples/controls/cdcontrolstest.ico differ diff --git a/components/customdrawn/examples/controls/cdcontrolstest.lpi b/components/customdrawn/examples/controls/cdcontrolstest.lpi new file mode 100644 index 0000000000..1068c6de8d --- /dev/null +++ b/components/customdrawn/examples/controls/cdcontrolstest.lpi @@ -0,0 +1,87 @@ + + + + + + + + + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="LCL"/> + </Item1> + </RequiredPackages> + <Units Count="3"> + <Unit0> + <Filename Value="cdcontrolstest.lpr"/> + <IsPartOfProject Value="True"/> + <UnitName Value="cdcontrolstest"/> + </Unit0> + <Unit1> + <Filename Value="mainform.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="formCDControlsTest"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="mainform"/> + </Unit1> + <Unit2> + <Filename Value="toolbartest.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="FormToolBar"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="toolbartest"/> + </Unit2> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="cdcontrolstest"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/components/customdrawn/examples/controls/cdcontrolstest.lpr b/components/customdrawn/examples/controls/cdcontrolstest.lpr new file mode 100644 index 0000000000..329c078474 --- /dev/null +++ b/components/customdrawn/examples/controls/cdcontrolstest.lpr @@ -0,0 +1,22 @@ +program cdcontrolstest; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, mainform, toolbartest + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource:=True; + Application.Initialize; + Application.CreateForm(TformCDControlsTest, formCDControlsTest); + Application.CreateForm(TFormToolBar, FormToolBar); + Application.Run; +end. + diff --git a/components/customdrawn/examples/controls/cdcontrolstest.res b/components/customdrawn/examples/controls/cdcontrolstest.res new file mode 100644 index 0000000000..7c6cf3e4be Binary files /dev/null and b/components/customdrawn/examples/controls/cdcontrolstest.res differ diff --git a/components/customdrawn/examples/controls/mainform.lfm b/components/customdrawn/examples/controls/mainform.lfm new file mode 100644 index 0000000000..06aab58326 --- /dev/null +++ b/components/customdrawn/examples/controls/mainform.lfm @@ -0,0 +1,37 @@ +object formCDControlsTest: TformCDControlsTest + Left = 154 + Height = 240 + Top = 259 + Width = 320 + Caption = 'formCDControlsTest' + ClientHeight = 240 + ClientWidth = 320 + OnCreate = FormCreate + LCLVersion = '1.5' + object Button1: TButton + Left = 24 + Height = 25 + Top = 72 + Width = 75 + Caption = 'ToolBar' + OnClick = Button1Click + TabOrder = 0 + end + object comboDrawer: TComboBox + Left = 96 + Height = 21 + Top = 16 + Width = 100 + ItemHeight = 0 + TabOrder = 1 + Text = 'comboDrawer' + end + object Label1: TLabel + Left = 21 + Height = 15 + Top = 21 + Width = 44 + Caption = 'Drawer:' + ParentColor = False + end +end diff --git a/components/customdrawn/examples/controls/mainform.pas b/components/customdrawn/examples/controls/mainform.pas new file mode 100644 index 0000000000..d2272ddfeb --- /dev/null +++ b/components/customdrawn/examples/controls/mainform.pas @@ -0,0 +1,59 @@ +unit mainform; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, + StdCtrls, TypInfo, + // other forms + toolbartest, + // CD + customdrawndrawers, customdrawn_common, customdrawn_mac; + +type + + { TformCDControlsTest } + + TformCDControlsTest = class(TForm) + Button1: TButton; + comboDrawer: TComboBox; + Label1: TLabel; + procedure Button1Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + formCDControlsTest: TformCDControlsTest; + +implementation + +{$R *.lfm} + +{ TformCDControlsTest } + +procedure TformCDControlsTest.Button1Click(Sender: TObject); +begin + FormToolBar.ShowModal(); +end; + +procedure TformCDControlsTest.FormCreate(Sender: TObject); +var + lStyle: TCDDrawStyle; + lStr: string; +begin + for lStyle in TCDDrawStyle do + begin + lStr := GetEnumName(TypeInfo(TCDDrawStyle), integer(lStyle)); + comboDrawer.Items.Add(lStr); + end; + comboDrawer.ItemIndex := 1; +end; + +end. + diff --git a/components/customdrawn/examples/controls/toolbartest.lfm b/components/customdrawn/examples/controls/toolbartest.lfm new file mode 100644 index 0000000000..b599e6c357 --- /dev/null +++ b/components/customdrawn/examples/controls/toolbartest.lfm @@ -0,0 +1,169 @@ +object FormToolBar: TFormToolBar + Left = 349 + Height = 240 + Top = 302 + Width = 320 + Caption = 'FormToolBar' + ClientHeight = 240 + ClientWidth = 320 + OnCreate = FormCreate + OnShow = FormShow + LCLVersion = '1.5' + object ToolBar1: TToolBar + Left = 0 + Height = 26 + Top = 214 + Width = 320 + Align = alBottom + Caption = 'ToolBar1' + Images = ImageList1 + TabOrder = 0 + object ToolButton1: TToolButton + Left = 1 + Top = 2 + Caption = 'ToolButton1' + ImageIndex = 0 + end + object ToolButton2: TToolButton + Left = 32 + Top = 2 + Caption = 'ToolButton2' + ImageIndex = 1 + Style = tbsCheck + end + object ToolButton3: TToolButton + Left = 24 + Height = 22 + Top = 2 + Width = 8 + Caption = 'ToolButton3' + Style = tbsSeparator + end + object ToolButton4: TToolButton + Left = 55 + Height = 22 + Top = 2 + Width = 5 + Caption = 'ToolButton4' + Style = tbsDivider + end + object ToolButton5: TToolButton + Left = 60 + Top = 2 + Caption = 'ToolButton5' + ImageIndex = 2 + Style = tbsCheck + end + end + object Label1: TLabel + Left = 13 + Height = 15 + Top = 147 + Width = 128 + Caption = 'Native for comparison:' + ParentColor = False + end + object ImageList1: TImageList + left = 200 + top = 133 + Bitmap = { + 4C69030000001000000010000000FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00D9DDE0FFA99987FF92755BFF95795DFF9479 + 5CFF94795CFF94795CFF94795CFF94795CFF94795CFF94795CFF94795CFF9176 + 5AFF90765AFF91765AFF91765AFFA2866EFFC09A77FFCFAE8AFFCFA882FFD0AA + 83FFD0AA83FFD0AA83FFD0AA83FFD0AA83FFD0AA83FFD0AA83FFD0AA83FFD0AA + 83FFD0AA83FFD0AA83FFD0AA83FFA77546FFFDE6D7FFFFF7EEFFFFF4EBFFFFF5 + ECFFFFF5ECFFFFF5ECFFFFF5ECFFFFF5ECFFFFF2E9FFFFF2E9FFFFF4EBFFFFF5 + ECFFFFF3EAFFFFF5ECFFFFF5ECFFA66F3DFFF9EEE6FFFBFFFFFF866B59FF865D + 46FF845B42FF856149FF825D45FF805940FF7C543AFF7B5A45FFFFFFFFFFFAFC + FEFFFFFFFFFFFBFDFFFFFBFEFFFFA46D3BFFF9EBE0FFFDFDFCFF8B644DFFB5AA + 95FFB4AF9AFFAC7D5EFFAA7C5CFFA47554FFA4704CFF855C41FFFDF9F6FFFFFF + FFFF5F5C5BFF5F5C5BFFFFFFFCFFA36A36FFF8E8DEFFFDF8FAFF926854FFCBD5 + CBFFCDE2DAFFB89078FFB8927AFFB48E74FF9C7C66FF8D6852FFFCF4F3FF5F5C + 5BFFFCF4F3FFFCF4F3FF5F5C5BFFA26733FFF8E7DCFFFCF5F6FF9A7C6CFFCABE + AFFFC8C1B2FFCFAF9CFFCEAF9CFF9F8A7DFF746A63FF907462FFF6EBEAFF5F5C + 5BFFF6EBEAFFF6EBEAFF5F5C5BFFA16531FFF6E5DAFFF4EEEEFF8A7365FFB69E + 92FFB69E90FFB09A8DFFA48F82FF66605CFF716761FF846D5FFFEEE4E2FF5F5C + 5BFFEEE4E2FFEEE4E2FF5F5C5BFFA1642FFFF6E3D8FFF0E8E9FF654838FF6A4B + 39FF654634FF5D3B27FF5A3926FF52392CFF4E3628FF583928FFE9DDDBFF5F5C + 5BFFE9DDDBFFE9DDDBFF5F5C5BFFA0612BFFF5E1D5FFEAE1E3FF70503EFF8761 + 4FFF85604DFF86614EFF87624EFF835E4BFF7B5E4FFF9F948FFFE6D9D9FFE6D9 + D9FF5F5C5BFF5F5C5BFFE6DAD9FF9E5E28FFF3DED2FFE9DEE0FF7C655AFF7055 + 44FF705545FF705444FF705444FF6F5243FF846E63FFB2B4B3FFE6D6D5FFE9D9 + D9FFEADAD9FFE8D8D8FFE6D6D5FFA06027FFF6E2D6FFE1D7DAFFDECECDFFDFD0 + D0FFDFD0D0FFDFD0D0FFDFD0D0FFDECFCFFFDFD1D0FFE0D1D1FFDECFCFFFDFD0 + D0FFDECFCFFFDFD0D0FFDECFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00BFBDBDFF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFF4DDCEFFF4DDCEFFF4DDCEFFF4DD + CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DD + CEFFF4DDCEFFF4DDCEFFA4A4FFFF927777FFE8B697FFE8B697FFE8B697FFE8B6 + 97FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B6 + 97FFE8B697FFA4A4FFFF400080FF927777FFDD966AFFDD966AFFDD966AFFDD96 + 6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD96 + 6AFFDD966AFFDD966AFFA4A4FFFF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFF927777FFFFFFFFFFDBDFDFFF927777FF9277 + 77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF + DFFFDBDFDFFFDBDFDFFFDBDFDFFF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFBE6C38FFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFBE6C + 38FFBE6C38FFBE6C38FFBE6C38FF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFBE6C38FFBE6C38FFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFBE6C + 38FFDDAC8CFFDBDFDFFFDBDFDFFF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFDDAC8CFFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFBE6C + 38FFBE6C38FFBE6C38FFDBDFDFFF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFDDAC8CFFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFDBDF + DFFFDBDFDFFFDDAC8CFFBE6C38FF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFDDAC8CFFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFDDAC + 8CFFDBDFDFFFDDAC8CFFBE6C38FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FF927777FFF5F7F7FF00F0FFFF0000FFFFF5F7 + F7FF333131FFF5F7F7FF7A7A7AFFF5F7F7FFF5F7F7FFC3C1C0FFF5F7F7FF7A7A + 7AFFF5F7F7FFF5F7F7FFF5F7F7FF927777FF00F0FFFF0000FFFF43AEEBFFF5F7 + F7FF010303FF333131FF010303FF333131FF010303FF7A7878FF333131FF0103 + 03FF333131FF010303FF7A7878FF927777FF43AEEBFF00F0FFFFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FF927777FF7A7A7AFF7A7A7AFF7A7A7AFF7A7A + 7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A + 7AFF7A7A7AFF7A7A7AFF7A7A7AFF927777FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1 + C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1 + C0FFC3C1C0FFC3C1C0FFC3C1C0FF927777FFF5F7F7FFC81EE6FFCFDC00FFF5F7 + F7FF7A7A7AFFF5F7F7FF7A7A7AFFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFC3C1 + C0FFF5F7F7FFF5F7F7FFF5F7F7FF927777FFCFDC00FFDC4300FFDC4300FFF5F7 + F7FF010303FF333131FF010303FF333131FF7A7878FF010303FF333131FF3331 + 31FF010303FF333131FF7A7878FF927777FFC81EE6FFC81EE6FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FF927777FF989799FF00F0FFFF0000FFFF9897 + 99FF333131FF989799FF989799FF989799FF989799FF989799FF989799FF9897 + 99FF989799FF989799FF989799FF927777FF00F0FFFF0000FFFF43AEEBFF9897 + 99FF010303FF333131FF010303FF333131FF333131FF010303FF333131FF7A78 + 78FF010303FF333131FF010303FF927777FF43AEEBFF00F0FFFF989799FF9897 + 99FF989799FF989799FF989799FF989799FF989799FF989799FF989799FF9897 + 99FF989799FF989799FF989799FF927777FFF5F7F7FFF5F7F7FFF5F7F7FFD842 + 00FFA5E61AFFF5F7F7FF010303FFF5F7F7FF7A7A7AFFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFC3C1C0FFF5F7F7FF + } + end +end diff --git a/components/customdrawn/examples/controls/toolbartest.pas b/components/customdrawn/examples/controls/toolbartest.pas new file mode 100644 index 0000000000..f304cc23a2 --- /dev/null +++ b/components/customdrawn/examples/controls/toolbartest.pas @@ -0,0 +1,68 @@ +unit toolbartest; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, + customdrawncontrols, customdrawndrawers, ComCtrls, StdCtrls; + +type + + { TFormToolBar } + + TFormToolBar = class(TForm) + ImageList1: TImageList; + Label1: TLabel; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ToolButton5: TToolButton; + procedure FormCreate(Sender: TObject); + procedure FormShow(Sender: TObject); + private + { private declarations } + public + { public declarations } + lToolBar: TCDToolBar; + end; + +var + FormToolBar: TFormToolBar; + +implementation + +uses + mainform; + +{$R *.lfm} + +{ TFormToolBar } + +procedure TFormToolBar.FormCreate(Sender: TObject); +var + lBmp: TBitmap; + lItem: TCDToolBarItem; +begin + lBmp := TBitmap.Create; + + lToolBar := TCDToolBar.Create(Self); + lToolBar.Parent := Self; + lBmp.LoadFromFile('/usr/share/magnifier/lupa.bmp'); + lItem := lToolBar.AddItem(tikButton); + lItem.Image := lBmp; + lItem.Caption := 'Btn 1'; + lToolBar.Parent := Self; + lToolBar.Parent := Self; +end; + +procedure TFormToolBar.FormShow(Sender: TObject); +begin + lToolBar.DrawStyle := TCDDrawStyle(formCDControlsTest.comboDrawer.ItemIndex); +end; + +end. + diff --git a/lcl/customdrawn_common.pas b/lcl/customdrawn_common.pas index 4fafe8388a..064f2b28b0 100644 --- a/lcl/customdrawn_common.pas +++ b/lcl/customdrawn_common.pas @@ -109,6 +109,12 @@ type AState: TCDControlState; AStateEx: TCDListViewStateEx); override; procedure DrawReportListViewItem(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; ACurItem: TCDListItems; AState: TCDControlState; AStateEx: TCDListViewStateEx); override; + // TCDToolBar + procedure DrawToolBar(ADest: TCanvas; ASize: TSize; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); override; + procedure DrawToolBarItem(ADest: TCanvas; ASize: TSize; + ACurItem: TCDToolBarItem; AX, AY: Integer; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); override; // TCDCustomTabControl procedure DrawCTabControl(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDCTabControlStateEx); override; @@ -225,6 +231,8 @@ begin TCDLISTVIEW_LINE_TOP_SPACING: Result := 3; TCDLISTVIEW_LINE_BOTTOM_SPACING: Result := 3; // + TCDTOOLBAR_ITEM_SPACING: Result := 2; + // TCDCTABCONTROL_CLOSE_TAB_BUTTON_WIDTH: Result := 10; TCDCTABCONTROL_CLOSE_TAB_BUTTON_EXTRA_SPACING: Result := 10; else @@ -1611,6 +1619,45 @@ begin ACurItem.Caption); end; +procedure TCDDrawerCommon.DrawToolBar(ADest: TCanvas; ASize: TSize; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); +var + lX, lY: Integer; + lItemSize: TSize; + i: Integer; + lCurItem: TCDToolBarItem; +begin + // Background + ADest.Pen.Style := psSolid; + ADest.Pen.Color := AStateEx.ParentRGBColor; + ADest.Brush.Style := bsSolid; + ADest.Brush.Color := AStateEx.ParentRGBColor; + ADest.Rectangle(0, 0, ASize.cx, ASize.cy); + + // Items + lX := GetMeasures(TCDTOOLBAR_ITEM_SPACING); + lY := GetMeasures(TCDTOOLBAR_ITEM_SPACING); + lItemSize.CY := AStateEx.ToolBarHeight - GetMeasures(TCDTOOLBAR_ITEM_SPACING) * 2; + for i := 0 to AStateEx.Items.Count-1 do + begin + lCurItem := TCDToolBarItem(AStateEx.Items[i]); + lItemSize.CX := lCurItem.Width; + DrawToolBarItem(ADest, lItemSize, lCurItem, lX, lY, AState, AStateEx); + lX := lX + lCurItem.Width; + end; +end; + +procedure TCDDrawerCommon.DrawToolBarItem(ADest: TCanvas; ASize: TSize; + ACurItem: TCDToolBarItem; AX, AY: Integer; AState: TCDControlState; AStateEx: TCDToolBarStateEx); +begin + // Background + ADest.Pen.Style := psSolid; + ADest.Pen.Color := AStateEx.ParentRGBColor; + ADest.Brush.Style := bsSolid; + ADest.Brush.Color := clWhite; + ADest.Rectangle(AX, AY, ASize.cx, ASize.cy); +end; + procedure TCDDrawerCommon.DrawCTabControl(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDCTabControlStateEx); begin diff --git a/lcl/customdrawncontrols.pas b/lcl/customdrawncontrols.pas index f7c0060c88..29b67be880 100644 --- a/lcl/customdrawncontrols.pas +++ b/lcl/customdrawncontrols.pas @@ -603,6 +603,31 @@ type property ViewStyle: TViewStyle read FViewStyle write SetViewStyle default vsList; end; + { TCDToolBar } + + TCDToolBar = class(TCDControl) + private + // fields + FShowCaptions: Boolean; + FItems: TFPList; + procedure SetShowCaptions(AValue: Boolean); + protected + FTBState: TCDToolBarStateEx; + function GetControlId: TCDControlID; override; + procedure CreateControlStateEx; override; + procedure PrepareControlStateEx; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function InsertItem(AKind: TCDToolbarItemKind; AIndex: Integer): TCDToolBarItem; + function AddItem(AKind: TCDToolbarItemKind): TCDToolBarItem; + procedure DeleteItem(AIndex: Integer); + function GetItem(AIndex: Integer): TCDToolBarItem; + published + property ShowCaptions: Boolean read FShowCaptions write SetShowCaptions; + property DrawStyle; + end; + { TCDTabControl } { TCDCustomTabControl } @@ -2843,6 +2868,80 @@ begin inherited Destroy; end; +{ TCDToolBar } + +procedure TCDToolBar.SetShowCaptions(AValue: Boolean); +begin + if FShowCaptions = AValue then Exit; + FShowCaptions := AValue; + if not (csLoading in ComponentState) then Invalidate; +end; + +function TCDToolBar.GetControlId: TCDControlID; +begin + Result := cidToolBar; +end; + +procedure TCDToolBar.CreateControlStateEx; +begin + FTBState := TCDToolBarStateEx.Create; + FStateEx := FTBState; +end; + +procedure TCDToolBar.PrepareControlStateEx; +begin + inherited PrepareControlStateEx; + FTBState.ShowCaptions := FShowCaptions; + FTBState.Items := FItems; + FTBState.ToolBarHeight := Height; +end; + +constructor TCDToolBar.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + Height := 26; + Align := alTop; + FItems := TFPList.Create(); + TabStop := False; +end; + +destructor TCDToolBar.Destroy; +begin + while FItems.Count > 0 do + DeleteItem(0); + FItems.Free; + inherited Destroy; +end; + +function TCDToolBar.InsertItem(AKind: TCDToolbarItemKind; AIndex: Integer): TCDToolBarItem; +var + lNewItem: TCDToolBarItem; +begin + lNewItem := TCDToolBarItem.Create; + lNewItem.Kind := AKind; + FItems.Insert(AIndex, lNewItem); + Result := lNewItem; +end; + +function TCDToolBar.AddItem(AKind: TCDToolbarItemKind): TCDToolBarItem; +begin + Result := InsertItem(AKind, FItems.Count); + Result.Width := 23; +end; + +procedure TCDToolBar.DeleteItem(AIndex: Integer); +begin + if (AIndex < 0) or (AIndex >= FItems.Count) then Exit; + FItems.Delete(AIndex); +end; + +function TCDToolBar.GetItem(AIndex: Integer): TCDToolBarItem; +begin + Result := nil; + if (AIndex < 0) or (AIndex >= FItems.Count) then Exit; + Result := TCDToolBarItem(FItems.Items[AIndex]); +end; + { TCDTabSheet } procedure TCDTabSheet.RealSetText(const Value: TCaption); diff --git a/lcl/customdrawndrawers.pas b/lcl/customdrawndrawers.pas index c67a9cfa06..bf18d6638f 100644 --- a/lcl/customdrawndrawers.pas +++ b/lcl/customdrawndrawers.pas @@ -42,6 +42,8 @@ const TCDLISTVIEW_LINE_TOP_SPACING = $1203; TCDLISTVIEW_LINE_BOTTOM_SPACING = $1204; + TCDTOOLBAR_ITEM_SPACING = $1300; + TCDCTABCONTROL_CLOSE_TAB_BUTTON_WIDTH = $2600; TCDCTABCONTROL_CLOSE_TAB_BUTTON_EXTRA_SPACING = $2601; @@ -210,6 +212,25 @@ type ShowColumnHeader: Boolean; end; + // ToolBar Start + + TCDToolbarItemKind = (tikButton, tikCheckButton, tikSeparator, tikDivider); + + TCDToolBarItem = class + Kind: TCDToolbarItemKind; + Image: TBitmap; + Caption: string; + Width: Integer; + end; + + TCDToolBarStateEx = class(TCDControlStateEx) + ShowCaptions: Boolean; + Items: TFPList; // of TCDToolBarItem + ToolBarHeight: Integer; + end; + + // ToolBar End + TCDCTabControlStateEx = class(TCDControlStateEx) public LeftmostTabVisibleIndex: Integer; @@ -238,7 +259,7 @@ type // Additional cidStaticText, // Common Controls - cidTrackBar, cidProgressBar, cidListView, cidCTabControl + cidTrackBar, cidProgressBar, cidListView, cidToolBar, cidCTabControl ); { TCDColorPalette } @@ -371,6 +392,12 @@ type AState: TCDControlState; AStateEx: TCDListViewStateEx); virtual; abstract; procedure DrawReportListViewItem(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; ACurItem: TCDListItems; AState: TCDControlState; AStateEx: TCDListViewStateEx); virtual; abstract; + // TCDToolBar + procedure DrawToolBar(ADest: TCanvas; ASize: TSize; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); virtual; abstract; + procedure DrawToolBarItem(ADest: TCanvas; ASize: TSize; + ACurItem: TCDToolBarItem; AX, AY: Integer; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); virtual; abstract; // TCDCustomTabControl procedure DrawCTabControl(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDCTabControlStateEx); virtual; abstract; @@ -672,6 +699,7 @@ begin cidTrackBar: DrawTrackBar(ADest, ASize, AState, TCDPositionedCStateEx(AStateEx)); cidProgressBar:DrawProgressBar(ADest, ASize, AState, TCDProgressBarStateEx(AStateEx)); cidListView: DrawListView(ADest, ASize, AState, TCDListViewStateEx(AStateEx)); + cidToolBar: DrawToolBar(ADest, ASize, AState, TCDToolBarStateEx(AStateEx)); cidCTabControl:DrawCTabControl(ADest, ASize, AState, TCDCTabControlStateEx(AStateEx)); end; end;