ExCtrls: Reworked demo.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8588 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2022-11-06 16:09:34 +00:00
parent ccc4ec4db1
commit 71e9d1d9ef
5 changed files with 1997 additions and 325 deletions

View File

@ -25,6 +25,12 @@
<FormatVersion Value="2"/>
</RunParams>
<RequiredPackages>
<Item>
<PackageName Value="LazControls"/>
</Item>
<Item>
<PackageName Value="LazControlDsgn"/>
</Item>
<Item>
<PackageName Value="ExCtrlsPkg"/>
</Item>

View File

@ -10,7 +10,7 @@ uses
athreads,
{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, main
Forms, lazcontrols, main
{ you can add units after this };
{$R *.res}

File diff suppressed because it is too large Load Diff

View File

@ -5,55 +5,81 @@ unit main;
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls,
StdCtrls,
ExImgList;
SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls,
DividerBevel, Classes;
type
{ TMainForm }
TMainForm = class(TForm)
CheckBox1: TCheckBox;
ColorButton1: TColorButton;
CheckBox1B: TCheckBox;
CheckBox2B: TCheckBox;
CheckBox1C: TCheckBox;
ColorButton: TColorButton;
DividerBevel1: TDividerBevel;
DividerBevel2: TDividerBevel;
ImageList1: TImageList;
ImageList2: TImageList;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ToolBar0: TToolBar;
ToolBar1: TToolBar;
ToolBar2: TToolBar;
ToolButton1: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
Label4: TLabel;
Label5: TLabel;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
ToolBar1A: TToolBar;
ToolBar1B: TToolBar;
ToolBar1C: TToolBar;
ToolBar2A: TToolBar;
ToolBar2B: TToolBar;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton;
ToolButton18: TToolButton;
ToolButton2: TToolButton;
ToolButton21: TToolButton;
ToolButton22: TToolButton;
ToolButton23: TToolButton;
ToolButton24: TToolButton;
ToolButton25: TToolButton;
ToolButton26: TToolButton;
ToolButton27: TToolButton;
ToolButton28: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton31: TToolButton;
ToolButton35: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
procedure CheckBox1Change(Sender: TObject);
ToolButtonT0_1: TToolButton;
ToolButtonT0_2: TToolButton;
ToolButtonT0_3: TToolButton;
ToolButtonT0_4: TToolButton;
ToolButtonT0_5: TToolButton;
ToolButtonT0_6: TToolButton;
ToolButtonT1_1: TToolButton;
ToolButtonT1_2: TToolButton;
ToolButtonT1_3: TToolButton;
ToolButtonT1_4: TToolButton;
ToolButtonT1_5: TToolButton;
ToolButtonT1_6: TToolButton;
ToolButtonT2_1: TToolButton;
ToolButtonT2_2: TToolButton;
ToolButtonT2_3: TToolButton;
ToolButtonT2_4: TToolButton;
ToolButtonT2_5: TToolButton;
ToolButtonT2_6: TToolButton;
ToolButtonT3_1: TToolButton;
ToolButtonT3_10: TToolButton;
ToolButtonT3_11: TToolButton;
ToolButtonT3_12: TToolButton;
ToolButtonT3_2: TToolButton;
ToolButtonT3_3: TToolButton;
ToolButtonT3_4: TToolButton;
ToolButtonT3_5: TToolButton;
ToolButtonT3_6: TToolButton;
ToolButtonT3_7: TToolButton;
ToolButtonT3_8: TToolButton;
ToolButtonT3_9: TToolButton;
procedure CheckBox1BChange(Sender: TObject);
procedure CheckBox1CChange(Sender: TObject);
procedure CheckBox2BChange(Sender: TObject);
procedure ColorButton1ColorChanged(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FImageList1: TImageList;
FImageList2: TImageList;
public
end;
@ -66,45 +92,62 @@ implementation
{$R *.lfm}
uses
ImgList;
ExImgList;
{ TMainForm }
procedure TMainForm.CheckBox1Change(Sender: TObject);
procedure TMainForm.CheckBox1BChange(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ToolBar0.ButtonCount - 1 do
begin
ToolBar0.Buttons[i].Enabled := Checkbox1.Checked;
ToolBar1.Buttons[i].Enabled := Checkbox1.Checked;
ToolBar2.Buttons[i].Enabled := Checkbox1.Checked;
for i := 0 to ToolBar1B.ButtonCount - 1 do
ToolBar1B.Buttons[i].Enabled := CheckBox1B.Checked;
end;
procedure TMainForm.CheckBox1CChange(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ToolBar1C.ButtonCount - 1 do
ToolBar1C.Buttons[i].Enabled := CheckBox1C.Checked;
end;
procedure TMainForm.CheckBox2BChange(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ToolBar2A.ButtonCount - 1 do
ToolBar2B.Buttons[i].Enabled := CheckBox2B.Checked;
end;
procedure TMainForm.ColorButton1ColorChanged(Sender: TObject);
begin
SetImageListColor(FImageList2, ColorButton1.ButtonColor);
Toolbar2.Invalidate;
SetImageListColor(Toolbar2B.Images, ColorButton.ButtonColor);
Toolbar2B.Invalidate;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
// Toolbar0 uses for Images the image list populated at designtime, and
// no dedicated imagelist for DisabledImages, i.e. it creates the disabled
// icons by the built-in routines.
// Original Toolbar for comparison
Toolbar1A.Images := ImageList1;
// Toolbar1 uses for Images the image list populated at designtime,
// and for DisabledImages the one created by CreateDisabledImageList.
FImageList1 := CreateDisabledImageList(ImageList1, self);
Toolbar1.DisabledImages := FImageList1;
// Disabled by built-in routines
Toolbar1B.Images := ImageList1;
Toolbar1B.DisabledImages := nil;
// Toolbar2 uses for Images a recolored copy of the image list populated at
// designtime, and for DisabledImages the same one as Toolbar1
FImageList2 := CreateRecoloredImageList(ImageList1, ColorButton1.ButtonColor, self);
Toolbar2.Images := FImageList2;
Toolbar2.DisabledImages := FImageList1;
// Disabled buttons by using CreateDisabledImagelist
Toolbar1C.Images := ImageList1;
ToolBar1C.DisabledImages := CreateDisabledImageList(ImageList1, self);
// Original toolbar for comparison
Toolbar2A.Images := ImageList2;
// Recolored toolbar - use the color button to change the color
Toolbar2B.Images := CreateRecoloredImageList(ImageList2, ColorButton.ButtonColor, Self);
// Since CreateDisabledImageList does not work when all buttons are black
// we use another recolored image list for the disabled images, now recolored
// to gray.
Toolbar2B.DisabledImages := CreateRecoloredImagelist(ImageList2, clGray, Self);
end;
end.

View File

@ -101,8 +101,9 @@ begin
end;
end;
{ Creates a new images list as copy of AImagelist and changes all non-transparent
pixels to the specified new color. Primarily useful for monochrome outline icons. }
{ Creates a new images list as copy of AImagelist and changes all pixels with
alpha > 0 to the specified new color.
Primarily intended to change the color of monochrome outline icons. }
function CreateRecoloredImageList(AImageList: TCustomImageList; ANewColor: TColor;
AOwner: TComponent): TImageList;
begin
@ -112,7 +113,7 @@ begin
SetImagelistColor(Result, ANewColor);
end;
{ Replaces the color of all non-transparent pixels by the given new color.
{ Replaces the color of all pixels with alpha > 0 by the given new color.
Intended to change the color of monochrome outline icons. }
procedure SetImageListColor(AImageList: TCustomImageList; ANewColor: TColor);
var