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"/> <FormatVersion Value="2"/>
</RunParams> </RunParams>
<RequiredPackages> <RequiredPackages>
<Item>
<PackageName Value="LazControls"/>
</Item>
<Item>
<PackageName Value="LazControlDsgn"/>
</Item>
<Item> <Item>
<PackageName Value="ExCtrlsPkg"/> <PackageName Value="ExCtrlsPkg"/>
</Item> </Item>

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -5,55 +5,81 @@ unit main;
interface interface
uses uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls,
StdCtrls, DividerBevel, Classes;
ExImgList;
type type
{ TMainForm } { TMainForm }
TMainForm = class(TForm) TMainForm = class(TForm)
CheckBox1: TCheckBox; CheckBox1B: TCheckBox;
ColorButton1: TColorButton; CheckBox2B: TCheckBox;
CheckBox1C: TCheckBox;
ColorButton: TColorButton;
DividerBevel1: TDividerBevel;
DividerBevel2: TDividerBevel;
ImageList1: TImageList; ImageList1: TImageList;
ImageList2: TImageList;
Label1: TLabel; Label1: TLabel;
Label2: TLabel; Label2: TLabel;
Label3: TLabel; Label3: TLabel;
ToolBar0: TToolBar; Label4: TLabel;
ToolBar1: TToolBar; Label5: TLabel;
ToolBar2: TToolBar; Panel1: TPanel;
ToolButton1: TToolButton; Panel2: TPanel;
ToolButton11: TToolButton; Panel3: TPanel;
ToolButton12: TToolButton; ToolBar1A: TToolBar;
ToolBar1B: TToolBar;
ToolBar1C: TToolBar;
ToolBar2A: TToolBar;
ToolBar2B: TToolBar;
ToolButton13: TToolButton; ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton; ToolButton17: TToolButton;
ToolButton18: TToolButton;
ToolButton2: TToolButton;
ToolButton21: TToolButton;
ToolButton22: TToolButton;
ToolButton23: TToolButton; ToolButton23: TToolButton;
ToolButton24: TToolButton; ToolButton24: TToolButton;
ToolButton25: TToolButton;
ToolButton26: TToolButton;
ToolButton27: TToolButton; ToolButton27: TToolButton;
ToolButton28: TToolButton; ToolButton28: TToolButton;
ToolButton3: TToolButton; ToolButton3: TToolButton;
ToolButton4: TToolButton; ToolButton31: TToolButton;
ToolButton5: TToolButton; ToolButton35: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton; ToolButton7: TToolButton;
ToolButton8: TToolButton; ToolButtonT0_1: TToolButton;
procedure CheckBox1Change(Sender: TObject); 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 ColorButton1ColorChanged(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
private private
FImageList1: TImageList;
FImageList2: TImageList;
public public
end; end;
@ -66,45 +92,62 @@ implementation
{$R *.lfm} {$R *.lfm}
uses uses
ImgList; ExImgList;
{ TMainForm } { TMainForm }
procedure TMainForm.CheckBox1Change(Sender: TObject); procedure TMainForm.CheckBox1BChange(Sender: TObject);
var var
i: Integer; i: Integer;
begin begin
for i := 0 to ToolBar0.ButtonCount - 1 do for i := 0 to ToolBar1B.ButtonCount - 1 do
begin ToolBar1B.Buttons[i].Enabled := CheckBox1B.Checked;
ToolBar0.Buttons[i].Enabled := Checkbox1.Checked; end;
ToolBar1.Buttons[i].Enabled := Checkbox1.Checked;
ToolBar2.Buttons[i].Enabled := Checkbox1.Checked; procedure TMainForm.CheckBox1CChange(Sender: TObject);
end; 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; end;
procedure TMainForm.ColorButton1ColorChanged(Sender: TObject); procedure TMainForm.ColorButton1ColorChanged(Sender: TObject);
begin begin
SetImageListColor(FImageList2, ColorButton1.ButtonColor); SetImageListColor(Toolbar2B.Images, ColorButton.ButtonColor);
Toolbar2.Invalidate; Toolbar2B.Invalidate;
end; end;
procedure TMainForm.FormCreate(Sender: TObject); procedure TMainForm.FormCreate(Sender: TObject);
begin begin
// Toolbar0 uses for Images the image list populated at designtime, and // Original Toolbar for comparison
// no dedicated imagelist for DisabledImages, i.e. it creates the disabled Toolbar1A.Images := ImageList1;
// icons by the built-in routines.
// Toolbar1 uses for Images the image list populated at designtime, // Disabled by built-in routines
// and for DisabledImages the one created by CreateDisabledImageList. Toolbar1B.Images := ImageList1;
FImageList1 := CreateDisabledImageList(ImageList1, self); Toolbar1B.DisabledImages := nil;
Toolbar1.DisabledImages := FImageList1;
// Toolbar2 uses for Images a recolored copy of the image list populated at // Disabled buttons by using CreateDisabledImagelist
// designtime, and for DisabledImages the same one as Toolbar1 Toolbar1C.Images := ImageList1;
FImageList2 := CreateRecoloredImageList(ImageList1, ColorButton1.ButtonColor, self); ToolBar1C.DisabledImages := CreateDisabledImageList(ImageList1, self);
Toolbar2.Images := FImageList2;
Toolbar2.DisabledImages := FImageList1; // 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;
end. end.

View File

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