customdrawn: Starts implementing toolbar support

git-svn-id: trunk@48818 -
This commit is contained in:
sekelsenmat 2015-04-23 11:22:11 +00:00
parent e1a9dcda81
commit cb635d6b2a
12 changed files with 625 additions and 1 deletions

8
.gitattributes vendored
View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="cdcontrolstest"/>
<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>

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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);

View File

@ -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;