Browse Source

Added ColorSpeedButton

lainz 8 years ago
parent
commit
c1c6cf295b

+ 7 - 2
bgracontrols.lpk

@@ -25,8 +25,8 @@
     </CompilerOptions>
     <Description Value="BGRA Controls is a set of graphical UI elements that you can use with Lazarus LCL applications."/>
     <License Value="Modified LGPL"/>
-    <Version Major="4" Minor="3" Release="2"/>
-    <Files Count="42">
+    <Version Major="4" Minor="3" Release="3"/>
+    <Files Count="43">
       <Item1>
         <Filename Value="bcbasectrls.pas"/>
         <AddToUsesPkgSection Value="False"/>
@@ -230,6 +230,11 @@
         <Filename Value="mouseandkeyinput/mouseandkeyinput.pas"/>
         <UnitName Value="MouseAndKeyInput"/>
       </Item42>
+      <Item43>
+        <Filename Value="colorspeedbutton.pas"/>
+        <HasRegisterProc Value="True"/>
+        <UnitName Value="ColorSpeedButton"/>
+      </Item43>
     </Files>
     <RequiredPkgs Count="2">
       <Item1>

+ 3 - 1
bgracontrols.pas

@@ -4,6 +4,7 @@
 
 unit bgracontrols;
 
+{$warn 5023 off : no warning about unused units}
 interface
 
 uses
@@ -15,7 +16,7 @@ uses
   BGRAImageManipulation, BGRAKnob, BGRAResizeSpeedButton, BGRAShape, 
   BGRASpeedButton, BGRASpriteAnimation, BGRAVirtualScreen, DTAnalogClock, 
   DTAnalogGauge, dtthemedclock, dtthemedgauge, MaterialColors, 
-  MouseAndKeyInput, LazarusPackageIntf;
+  MouseAndKeyInput, ColorSpeedButton, LazarusPackageIntf;
 
 implementation
 
@@ -50,6 +51,7 @@ begin
   RegisterUnit('DTAnalogGauge', @DTAnalogGauge.Register);
   RegisterUnit('dtthemedclock', @dtthemedclock.Register);
   RegisterUnit('dtthemedgauge', @dtthemedgauge.Register);
+  RegisterUnit('ColorSpeedButton', @ColorSpeedButton.Register);
 end;
 
 initialization

+ 212 - 0
colorspeedbutton.pas

@@ -0,0 +1,212 @@
+unit ColorSpeedButton;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
+  Buttons, BGRASpeedButton;
+
+type
+
+  { TColorState }
+
+  TColorState = class(TPersistent)
+  private
+    FBorderColor: TColor;
+    FBorderWidth: integer;
+    FColor: TColor;
+    procedure SetFBorderColor(AValue: TColor);
+    procedure SetFBorderWidth(AValue: integer);
+    procedure SetFColor(AValue: TColor);
+  public
+    constructor Create;
+  published
+    property Color: TColor read FColor write SetFColor;
+    property BorderColor: TColor read FBorderColor write SetFBorderColor;
+    property BorderWidth: integer read FBorderWidth write SetFBorderWidth;
+  end;
+
+  { TColorSpeedButton }
+
+  TColorSpeedButton = class(TBGRASpeedButton)
+  private
+    FPopupMode: boolean;
+    FStateActive: TColorState;
+    FStateDisabled: TColorState;
+    FStateHover: TColorState;
+    FStateNormal: TColorState;
+    procedure SetFPopupMode(AValue: boolean);
+    procedure SetFStateActive(AValue: TColorState);
+    procedure SetFStateDisabled(AValue: TColorState);
+    procedure SetFStateHover(AValue: TColorState);
+    procedure SetFStateNormal(AValue: TColorState);
+  protected
+    procedure PaintBackground(var PaintRect: TRect); override;
+  public
+    constructor Create(TheOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure Click; override;
+  published
+    property PopupMode: boolean read FPopupMode write SetFPopupMode;
+    property StateNormal: TColorState read FStateNormal write SetFStateNormal;
+    property StateHover: TColorState read FStateHover write SetFStateHover;
+    property StateActive: TColorState read FStateActive write SetFStateActive;
+    property StateDisabled: TColorState read FStateDisabled write SetFStateDisabled;
+  end;
+
+procedure Register;
+
+implementation
+
+procedure Register;
+begin
+  RegisterComponents('BGRA Controls', [TColorSpeedButton]);
+end;
+
+{ TColorSpeedButton }
+
+procedure TColorSpeedButton.SetFStateActive(AValue: TColorState);
+begin
+  if FStateActive = AValue then
+    Exit;
+  FStateActive := AValue;
+  Invalidate;
+end;
+
+procedure TColorSpeedButton.SetFPopupMode(AValue: boolean);
+begin
+  if FPopupMode = AValue then
+    Exit;
+  FPopupMode := AValue;
+end;
+
+procedure TColorSpeedButton.SetFStateDisabled(AValue: TColorState);
+begin
+  if FStateDisabled = AValue then
+    Exit;
+  FStateDisabled := AValue;
+  Invalidate;
+end;
+
+procedure TColorSpeedButton.SetFStateHover(AValue: TColorState);
+begin
+  if FStateHover = AValue then
+    Exit;
+  FStateHover := AValue;
+  Invalidate;
+end;
+
+procedure TColorSpeedButton.SetFStateNormal(AValue: TColorState);
+begin
+  if FStateNormal = AValue then
+    Exit;
+  FStateNormal := AValue;
+  Invalidate;
+end;
+
+procedure TColorSpeedButton.PaintBackground(var PaintRect: TRect);
+begin
+  case FState of
+    bsUp:
+    begin
+      Canvas.Pen.Color := FStateNormal.BorderColor;
+      Canvas.Pen.Width := FStateNormal.BorderWidth;
+      Canvas.Brush.Color := FStateNormal.Color;
+    end;
+    bsDisabled:
+    begin
+      Canvas.Pen.Color := FStateDisabled.BorderColor;
+      Canvas.Pen.Width := FStateDisabled.BorderWidth;
+      Canvas.Brush.Color := FStateDisabled.Color;
+    end;
+    bsDown, bsExclusive:
+    begin
+      Canvas.Pen.Color := FStateActive.BorderColor;
+      Canvas.Pen.Width := FStateActive.BorderWidth;
+      Canvas.Brush.Color := FStateActive.Color;
+    end;
+    bsHot:
+    begin
+      Canvas.Pen.Color := FStateHover.BorderColor;
+      Canvas.Pen.Width := FStateHover.BorderWidth;
+      Canvas.Brush.Color := FStateHover.Color;
+    end;
+  end;
+  if Canvas.Pen.Width = 0 then
+    Canvas.Pen.Color := Canvas.Brush.Color;
+  Canvas.Rectangle(PaintRect);
+end;
+
+constructor TColorSpeedButton.Create(TheOwner: TComponent);
+begin
+  inherited Create(TheOwner);
+  FStateNormal := TColorState.Create;
+  FStateHover := TColorState.Create;
+  FStateActive := TColorState.Create;
+  FStateDisabled := TColorState.Create;
+  { Windows Style }
+  FStateNormal.Color := RGBToColor(225, 225, 225);
+  FStateNormal.BorderColor := RGBToColor(173, 173, 173);
+  FStateHover.Color := RGBToColor(229, 241, 251);
+  FStateHover.BorderColor := RGBToColor(0, 120, 215);
+  FStateActive.Color := RGBToColor(204, 228, 247);
+  FStateActive.BorderColor := RGBToColor(0, 84, 153);
+  FStateDisabled.Color := RGBToColor(204, 204, 204);
+  FStateDisabled.Color := RGBToColor(191, 191, 191);
+end;
+
+destructor TColorSpeedButton.Destroy;
+begin
+  FStateNormal.Free;
+  FStateHover.Free;
+  FStateActive.Free;
+  FStateDisabled.Free;
+  inherited Destroy;
+end;
+
+procedure TColorSpeedButton.Click;
+var
+  p: TPoint;
+begin
+  if PopupMode then
+  begin
+    p := Parent.ClientToScreen(Point(Left, Top));
+    PopupMenu.PopUp(p.x, p.y+Height);
+  end;
+  inherited Click;
+end;
+
+{ TColorState }
+
+procedure TColorState.SetFBorderColor(AValue: TColor);
+begin
+  if FBorderColor = AValue then
+    Exit;
+  FBorderColor := AValue;
+end;
+
+procedure TColorState.SetFBorderWidth(AValue: integer);
+begin
+  if FBorderWidth = AValue then
+    Exit;
+  FBorderWidth := AValue;
+end;
+
+procedure TColorState.SetFColor(AValue: TColor);
+begin
+  if FColor = AValue then
+    Exit;
+  FColor := AValue;
+end;
+
+constructor TColorState.Create;
+begin
+  inherited Create;
+  BorderWidth := 1;
+  BorderColor := clBlack;
+  Color := clWhite;
+end;
+
+end.

BIN
test/test_colorspeedbutton/test_colorspeedbutton.ico


+ 82 - 0
test/test_colorspeedbutton/test_colorspeedbutton.lpi

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="10"/>
+    <PathDelim Value="\"/>
+    <General>
+      <SessionStorage Value="InProjectDir"/>
+      <MainUnit Value="0"/>
+      <Title Value="test_colorspeedbutton"/>
+      <Scaled Value="True"/>
+      <ResourceType Value="res"/>
+      <UseXPManifest Value="True"/>
+      <XPManifest>
+        <DpiAware Value="True"/>
+      </XPManifest>
+      <Icon Value="0"/>
+    </General>
+    <BuildModes Count="1">
+      <Item1 Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+    </PublishOptions>
+    <RunParams>
+      <local>
+        <FormatVersion Value="1"/>
+      </local>
+    </RunParams>
+    <RequiredPackages Count="2">
+      <Item1>
+        <PackageName Value="bgracontrols"/>
+      </Item1>
+      <Item2>
+        <PackageName Value="LCL"/>
+      </Item2>
+    </RequiredPackages>
+    <Units Count="2">
+      <Unit0>
+        <Filename Value="test_colorspeedbutton.lpr"/>
+        <IsPartOfProject Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="umain.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="Form1"/>
+        <HasResources Value="True"/>
+        <ResourceBaseClass Value="Form"/>
+      </Unit1>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <PathDelim Value="\"/>
+    <Target>
+      <Filename Value="test_colorspeedbutton"/>
+    </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>

+ 22 - 0
test/test_colorspeedbutton/test_colorspeedbutton.lpr

@@ -0,0 +1,22 @@
+program test_colorspeedbutton;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Interfaces, // this includes the LCL widgetset
+  Forms, umain
+  { you can add units after this };
+
+{$R *.res}
+
+begin
+  Application.Scaled:=True;
+  RequireDerivedFormResource:=True;
+  Application.Initialize;
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.
+

+ 508 - 0
test/test_colorspeedbutton/umain.lfm

@@ -0,0 +1,508 @@
+object Form1: TForm1
+  Left = 472
+  Height = 425
+  Top = 170
+  Width = 554
+  Caption = 'Color SpeedButton'
+  ClientHeight = 425
+  ClientWidth = 554
+  DesignTimePPI = 120
+  LCLVersion = '1.9.0.0'
+  object ColorSpeedButton1: TColorSpeedButton
+    Left = 8
+    Height = 55
+    Top = 17
+    Width = 150
+    Caption = 'Button'
+    Glyph.Data = {
+      36100000424D3610000000000000360000002800000020000000200000000100
+      2000000000000010000064000000640000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000030000000900000011000000150000001600000016000000160000
+      0016000000150000001100000009000000030000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000001000000060000
+      00100000001B0000002900000038000000410000004300000043000000430000
+      00430000004100000038000000290000001B0000001000000006000000010000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000030000000D000000200000
+      003512171A4C59717F997192A5DE799CB0FF789BB0FF789BB0FF789BB0FF789B
+      B0FF799CB0FF7192A5DE59717F9912171A4C00000035000000200000000D0000
+      0003000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000005000000160000002E2A353C5A7393
+      A6DF7FA0B3FFA3BBCBFFBACEDAFFD3DFE9FFD8E4EEFFD8E4EEFFD8E4EEFFD8E4
+      EEFFD3DFE9FFBACEDAFFA3BBCBFF7FA0B3FF7393A6DF2A353C5A0000002E0000
+      0016000000050000000000000000000000000000000000000000000000000000
+      00000000000000000000000000050000001900000038668293B47EA0B3FFB5CA
+      D8FFD6E4EDFFC9DCE5FFBCD4DEFFB2CED8FFAFCDD6FFAFCCD6FFAFCCD6FFAFCD
+      D6FFB2CED8FFBCD4DEFFC9DCE5FFD6E4EDFFB5CAD8FF7EA0B3FF668293B40000
+      0038000000190000000500000000000000000000000000000000000000000000
+      00000000000000000005000000190000003A7596AAED95B2C3FFD4E2ECFFC5DA
+      E3FFB3CFD9FFB0CED7FFB1CED8FFB1CED8FFB1CED8FFB1CED8FFB1CED8FFB1CE
+      D8FFB1CED8FFB1CED8FFB0CED7FFB3CFD9FFC5DAE3FFD4E2ECFF95B2C3FF7596
+      AAED0000003A0000001900000005000000000000000000000000000000000000
+      00000000000300000016000000387495A9EBAFC6D5FFD6E4EDFFBAD2DDFFB3CE
+      D8FFB4CED9FFB4CED9FFB5CFDBFFB6D0DBFFB6D0DBFFB6D0DBFFB6D0DBFFB6D0
+      DBFFB6D0DBFFB5CFDBFFB4CED9FFB4CED9FFB3CED8FFBAD2DDFFD6E4EDFFAFC6
+      D5FF7495A9EB0000003800000016000000030000000000000000000000000000
+      00010000000D0000002E7696ABECB0C6D5FFD3E3ECFFB6D0DBFFB4CFDAFFB5CF
+      DAFFB5CFDAFFB7D2DDFFBBD7E2FFBDD9E5FFBDDAE5FFBDDAE5FFBDDAE5FFBDDA
+      E5FFBDD9E5FFBBD7E2FFB7D2DDFFB5CFDAFFB5CFDAFFB4CFDAFFB6D0DBFFD3E3
+      ECFFB0C6D5FF7696ABEC0000002E0000000D0000000100000000000000000000
+      00060000001F678495B096B3C4FFD8E5EFFFB7D1DCFFB6D0DBFFB7D0DBFFB7D0
+      DBFFB8D1DCFFBCD6E1FF423C39FF46403EFF47413FFF47413FFF47413FFF4741
+      3FFF46403EFF423C39FFBCD6E1FFB8D1DCFFB7D0DBFFB7D0DBFFB6D0DBFFB7D1
+      DCFFD8E5EFFF96B3C4FF678495B00000001F0000000600000000000000000000
+      0010303C444C7D9FB3FFD7E6F1FFBED5E0FFB7D1DCFFB8D1DCFFB8D1DCFFB8D1
+      DCFFB8D1DCFFBAD4DFFFBED9E4FFC0DBE7FFC0DCE7FFC0DCE7FFC0DCE7FFC0DC
+      E7FFC0DBE7FFBED9E4FFBAD4DFFFB8D1DCFFB8D1DCFFB8D1DCFFB8D1DCFFB7D1
+      DCFFBED5E0FFD7E6F1FF7D9FB3FF303C444C0000001000000000000000030000
+      001B7393A7DDB7CDDBFFCBDEE8FFB8D1DCFFB9D2DDFFB9D2DDFFB9D2DDFFB9D2
+      DDFFB9D2DDFFB9D3DEFFBAD4DFFFBBD5E0FFBCD6E1FFBCD6E2FFBCD6E2FFBCD6
+      E1FFBBD5E0FFBAD4DFFFB9D3DEFFB9D2DDFFB9D2DDFFB9D2DDFFB9D2DDFFB9D2
+      DDFFB8D1DCFFCBDEE8FFB7CDDBFF7393A7DD0000001B00000003000000091C23
+      27327D9FB4FFDEEBF5FFBBD4DFFFBBD3DEFFBBD3DEFFBBD3DEFFBBD3DEFFBBD3
+      DEFFBBD3DEFFBBD3DEFFBDD5E0FFC1DAE6FFC6E0EBFFC8E3EEFFC8E3EEFFC6E0
+      EBFFC1DAE6FFBDD5E0FFBBD3DEFFBBD3DEFFBBD3DEFFBBD3DEFFBBD3DEFFBBD3
+      DEFFBBD3DEFFBBD4DFFFDEEBF5FF7D9FB4FF1C23273200000009000000115F7A
+      8A8DA5BFCEFFD1E3EEFFBBD4DFFFBCD4DFFFBDD6E1FFBED6E1FFBED6E1FFBDD6
+      E1FFBDD5E0FFBDD6E1FFC2DBE7FF96A6AFFF3A393BFF292424FF292424FF3A39
+      3BFF96A6AFFFC2DBE7FFBDD6E1FFBDD5E0FFBDD6E1FFBED6E1FFBED6E1FFBDD6
+      E1FFBCD4DFFFBBD4DFFFD1E3EEFFA5BFCEFF5F7A8A8D00000011000000157393
+      A7DABFD4E0FFC8DDE7FFBFD6E3FFC2DAE7FFC6DFECFFC8E1EFFFC8E2EFFFC7E0
+      EEFFC5DDEAFFC3DBE8FFC9E2F0FF322D2BFF3E3B3AFF423F3FFF423F3FFF3E3B
+      3AFF322D2BFFC9E2F0FFC3DBE8FFC5DDEAFFC7E0EEFFC8E2EFFFC8E1EFFFC6DF
+      ECFFC2DAE7FFBFD6E3FFC8DDE7FFBFD4E0FF7393A7DA0000001500000016789B
+      B0FFDBEBF5FFC1D8E3FFC4DBE9FFB3C6D1FF615E5EFF534D4AFF544E4BFF5955
+      54FF7E8287FFBBD2DDFFCFE8F7FF423D3BFF4B4847FF4E4B4BFF4E4B4BFF4B48
+      47FF423D3BFFCFE8F7FFBBD2DDFF7E8286FF595554FF524E4BFF534D4AFF5F5E
+      5EFFB3C6D1FFC4DBE9FFC1D8E3FFDBEBF5FF789BB0FF0000001600000016779A
+      AFFFE2F2F9FFC2D9E7FFBBD0DBFF575352FF575351FF595555FF595554FF5551
+      51FF504D4BFF53504FFF9FAEB6FFAABBC5FF605E5EFF524C4AFF524C4AFF605E
+      5EFFAABBC5FF9FAEB6FF53504FFF504C4BFF555250FF575554FF595554FF5753
+      51FF575352FFBBD0DBFFC2D9E7FFE2F2F9FF779AAFFF0000001600000016779A
+      AFFFE3F4FBFFC8DEECFF848C91FF524F4DFF575453FF575353FF52504FFF4C49
+      49FF474443FF454040FF413C3AFF9BAAB3FFD1EAF9FFCEE6F4FFCEE6F4FFD1EA
+      F9FF9BAAB3FF413C3AFF44403EFF474343FF4C4949FF52504FFF575353FF5654
+      53FF524D4DFF858C91FFC8DFECFFE3F4FBFF779AAFFF0000001600000016779A
+      AFFFE5F5FDFFCCE3F2FF5A5959FF52504EFF555252FF504D4DFF555351FFEDED
+      ECFFFFFFFFFFFFFFFFFFEAE8E6FF464240FFA9B9C4FFCAE0EEFFCAE0EEFFA9B9
+      C4FF464240FFEAE8E6FFFFFFFFFFFFFFFFFFEDEDECFF555351FF504D4DFF5452
+      51FF524E4EFF5A5859FFCCE3F2FFE5F5FDFF779AAFFF0000001600000015779A
+      AFFFE7F7FFFFCFE7F5FF474240FF514E4DFF504E4EFF484545FFD0CFCEFFA8AB
+      B9FF2A314FFF28304DFFA4A9B6FFC9C6C3FF454444FFCFE7F4FFD0E7F4FF4544
+      45FFC9C7C4FFA6AAB7FF29314FFF28314DFFA6A9B8FFCFCECDFF484545FF504E
+      4EFF514D4DFF464140FFCFE6F5FFE7F7FFFF779AAFFF0000001500000011789A
+      AFFFE1F3FCFFC9DFECFF453F3EFF4E4C4CFF4C4A4AFF413E3EFFFFFFFFFF2A32
+      4EFF323B56FF2B334FFF1E2745FFFFFFFFFF2C2727FFD8EBF9FFCCE0ECFF2E29
+      28FFFFFFFFFF29314CFF323A55FF2B334FFF1F2846FFFFFFFFFF3F3D3DFF4C4B
+      4BFF4E4A4AFF433F3DFFD4EAF8FFE1F3FCFF789AAFFF00000011000000097595
+      A9D6C6DCE9FFD4E7F3FF3F3B39FF4A4848FF494747FF3C393BFFFFFFFFFF262E
+      4AFF2B324EFFFFEED2FFFFFEFBFFFFFFFBFF433F3DFFDCEFFBFFD2E3EFFF2824
+      25FFFFFFFFFF252E49FF2B334EFFFFEED2FFFFFEFAFFFFFFFFFF3A383AFF4947
+      47FF4A4748FF3F3A39FFDDF1FEFFC5DCE8FF7495A9D600000009000000036C8A
+      9C7CAAC4D5FFE6FAFFFF4D4D4DFF454242FF464444FF393739FFFFFFFFFF9999
+      A0FF192340FFF0E1C8FFFFFFFFFFFFFEEDFF373539FFDEF0FCFFDFF1FDFF3938
+      3AFFFFFFF4FF97979BFF1A2340FFF0E1C8FFFFFFFFFFFFFFFFFF373638FF4644
+      44FF444142FF4D4C4DFFE5FAFFFFAAC4D4FF6C8A9C7C00000003000000003543
+      4C1A7FA1B4FFEEFFFFFF888F96FF3B3736FF413E3FFF393739FFBEB9AEFFFFFF
+      F1FFFFFCE9FFFEF4E2FFFFF3DFFFAAA196FF7F858AFFDFEEF8FFDFEEF8FF7E84
+      8BFFAEA497FFFFFAE6FFFFF9E5FFFFF5E4FFFFFAEAFFBBB4ABFF383739FF413E
+      3FFF3A3636FF888F96FFEEFFFFFF7FA0B4FF37464F1900000000000000000000
+      000B7898ADD6C3DBE8FFE6FAFFFF71747AFF353131FF373435FF3C393AFFD4CB
+      BAFFFFF8E1FFFFF3DAFFC4B9A6FF707377FFE3F2FCFFDEECF5FFDEECF5FFE3F2
+      FCFF707378FFC5BAA6FFFFF3DBFFFFF7E0FFD3C8B8FF3A393AFF363435FF3531
+      31FF71757BFFE6FAFFFFC2DBE8FF7698ACD60000000900000000000000040000
+      00172C373D5683A7BCFFE9FCFFFFDEF1FFFF9AA5AFFF4C4D4FFF262424FF201D
+      1EFF181719FF3C3D42FF98A0A8FFE7F3FDFFE2EDF7FFE0EBF4FFE0EBF4FFE2ED
+      F7FFE7F3FDFF98A0A8FF3C3D42FF181619FF201D1FFF262424FF4C4D4FFF9AA6
+      AFFFDFF3FFFFEAFFFFFF83A8BEFF222C324200000015000000040000000D0000
+      002F161210E961747FFF9EBED1FFEAFDFFFFD7E8F7FFD9ECFBFFEEFBFFFFF3FE
+      FFFFF1FCFFFFEEF9FFFFE9F4FDFFE6F0F8FFE4EEF6FFE3EDF5FFE3EDF5FFE4EE
+      F6FFE6F0F8FFE9F4FDFFEEF9FFFFF1FCFFFFF3FEFFFFEEFBFFFFDAEDFCFFD8EB
+      FBFFEEFFFFFF83878BFF505355FF13100EBD0000002E0000000D000000141E1E
+      1DBF423F3EFF545150FF7494A6FFBCD7E5FFE7FAFFFFD2E3F2FFD4E4F2FFE9F2
+      FAFFEAF2F9FFE8F1F8FFE7F0F7FFE6EFF6FFE6EFF6FFE6EFF6FFE6EFF6FFE6EF
+      F6FFE6EFF6FFE7F0F7FFE8F1F8FFEAF2F9FFE9F2FAFFD4E5F3FFD4E6F5FFECFF
+      FFFF848A8CFF4A4645FF534F4FFF43403FFF1E1D1DC100000015000000152323
+      23FF514F4EFF4B4847FF484544FF7290A4FFBCD7E6FFE9FCFFFFD5E6F4FFD0E0
+      EFFFE5EEF6FFEBF3F9FFEBF2F8FFEAF2F8FFE9F1F8FFE9F1F8FFE9F1F8FFE9F1
+      F8FFEAF2F8FFEBF2F8FFEBF3F9FFE5EEF6FFD0E0EFFFD6E8F6FFEFFFFFFF8085
+      87FF423E3DFF494747FF4D4B4BFF514F4FFF232323FF000000150000000D2323
+      23FF484546FF444243FF413E3EFF403D3EFF7291A3FF9FBFD2FFE8FCFFFFDFF0
+      FCFFD2E2F1FFD8E5F3FFE3ECF6FFEBF1F8FFEFF5FAFFEFF5FAFFEFF5FAFFEFF5
+      FAFFEBF1F8FFE3ECF6FFD8E5F3FFD2E2F1FFE0F0FCFFEBFFFFFF72777CFF3935
+      35FF413E3FFF444142FF454344FF484547FF232323FF0000000D000000042323
+      23B3353335FF3D3C3DFF3C3B3BFF3A3737FF3A3838FF586B77FF81A4BBFFC2DB
+      E6FFEDFFFFFFE2F5FEFFDAEBF7FFD3E3F2FFD2E1F1FFD2E1F1FFD2E1F1FFD2E1
+      F1FFD3E3F2FFDAEBF7FFE2F5FEFFEDFFFFFFC2DCE7FF83A8BFFF3B3E42FF3936
+      37FF3C3B3CFF3C3B3CFF3D3C3DFF353335FF232323B300000004000000000000
+      0003232323AE2F2F30FF353436FF343335FF2C2A2BFF16120FA85A738219789B
+      AFD17D9EB3FFABC6D5FFC9E1ECFFE8FBFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFF
+      FFFFE8FBFFFFC9E1ECFFABC6D5FF7D9EB3FF799BAFD15C76851A181412A92D2C
+      2DFF353436FF353436FF2F2F30FF232323AE0000000300000000000000000000
+      000000000004242424B0242524FF242424FF232322EA00000005000000000000
+      0000627D8C0E7696A9727799ADD17799AEFF7699AEFF7698ADFF7698ADFF7699
+      AEFF7799AEFF7799ADD17696A972627D8C0E0000000000000000000000042222
+      22AF242424FF242524FF242424B0000000040000000000000000
+    }
+    PopupMode = False
+    StateNormal.Color = 14803425
+    StateNormal.BorderColor = 11382189
+    StateNormal.BorderWidth = 1
+    StateHover.Color = 16511461
+    StateHover.BorderColor = 14120960
+    StateHover.BorderWidth = 1
+    StateActive.Color = 16245964
+    StateActive.BorderColor = 10048512
+    StateActive.BorderWidth = 1
+    StateDisabled.Color = 12566463
+    StateDisabled.BorderColor = clBlack
+    StateDisabled.BorderWidth = 1
+  end
+  object ColorSpeedButton2: TColorSpeedButton
+    Left = 168
+    Height = 55
+    Top = 17
+    Width = 150
+    Caption = 'Disabled'
+    Enabled = False
+    Glyph.Data = {
+      36100000424D3610000000000000360000002800000020000000200000000100
+      2000000000000010000064000000640000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000030000000900000011000000150000001600000016000000160000
+      0016000000150000001100000009000000030000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000001000000060000
+      00100000001B0000002900000038000000410000004300000043000000430000
+      00430000004100000038000000290000001B0000001000000006000000010000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000030000000D000000200000
+      003512171A4C59717F997192A5DE799CB0FF789BB0FF789BB0FF789BB0FF789B
+      B0FF799CB0FF7192A5DE59717F9912171A4C00000035000000200000000D0000
+      0003000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000005000000160000002E2A353C5A7393
+      A6DF7FA0B3FFA3BBCBFFBACEDAFFD3DFE9FFD8E4EEFFD8E4EEFFD8E4EEFFD8E4
+      EEFFD3DFE9FFBACEDAFFA3BBCBFF7FA0B3FF7393A6DF2A353C5A0000002E0000
+      0016000000050000000000000000000000000000000000000000000000000000
+      00000000000000000000000000050000001900000038668293B47EA0B3FFB5CA
+      D8FFD6E4EDFFC9DCE5FFBCD4DEFFB2CED8FFAFCDD6FFAFCCD6FFAFCCD6FFAFCD
+      D6FFB2CED8FFBCD4DEFFC9DCE5FFD6E4EDFFB5CAD8FF7EA0B3FF668293B40000
+      0038000000190000000500000000000000000000000000000000000000000000
+      00000000000000000005000000190000003A7596AAED95B2C3FFD4E2ECFFC5DA
+      E3FFB3CFD9FFB0CED7FFB1CED8FFB1CED8FFB1CED8FFB1CED8FFB1CED8FFB1CE
+      D8FFB1CED8FFB1CED8FFB0CED7FFB3CFD9FFC5DAE3FFD4E2ECFF95B2C3FF7596
+      AAED0000003A0000001900000005000000000000000000000000000000000000
+      00000000000300000016000000387495A9EBAFC6D5FFD6E4EDFFBAD2DDFFB3CE
+      D8FFB4CED9FFB4CED9FFB5CFDBFFB6D0DBFFB6D0DBFFB6D0DBFFB6D0DBFFB6D0
+      DBFFB6D0DBFFB5CFDBFFB4CED9FFB4CED9FFB3CED8FFBAD2DDFFD6E4EDFFAFC6
+      D5FF7495A9EB0000003800000016000000030000000000000000000000000000
+      00010000000D0000002E7696ABECB0C6D5FFD3E3ECFFB6D0DBFFB4CFDAFFB5CF
+      DAFFB5CFDAFFB7D2DDFFBBD7E2FFBDD9E5FFBDDAE5FFBDDAE5FFBDDAE5FFBDDA
+      E5FFBDD9E5FFBBD7E2FFB7D2DDFFB5CFDAFFB5CFDAFFB4CFDAFFB6D0DBFFD3E3
+      ECFFB0C6D5FF7696ABEC0000002E0000000D0000000100000000000000000000
+      00060000001F678495B096B3C4FFD8E5EFFFB7D1DCFFB6D0DBFFB7D0DBFFB7D0
+      DBFFB8D1DCFFBCD6E1FF423C39FF46403EFF47413FFF47413FFF47413FFF4741
+      3FFF46403EFF423C39FFBCD6E1FFB8D1DCFFB7D0DBFFB7D0DBFFB6D0DBFFB7D1
+      DCFFD8E5EFFF96B3C4FF678495B00000001F0000000600000000000000000000
+      0010303C444C7D9FB3FFD7E6F1FFBED5E0FFB7D1DCFFB8D1DCFFB8D1DCFFB8D1
+      DCFFB8D1DCFFBAD4DFFFBED9E4FFC0DBE7FFC0DCE7FFC0DCE7FFC0DCE7FFC0DC
+      E7FFC0DBE7FFBED9E4FFBAD4DFFFB8D1DCFFB8D1DCFFB8D1DCFFB8D1DCFFB7D1
+      DCFFBED5E0FFD7E6F1FF7D9FB3FF303C444C0000001000000000000000030000
+      001B7393A7DDB7CDDBFFCBDEE8FFB8D1DCFFB9D2DDFFB9D2DDFFB9D2DDFFB9D2
+      DDFFB9D2DDFFB9D3DEFFBAD4DFFFBBD5E0FFBCD6E1FFBCD6E2FFBCD6E2FFBCD6
+      E1FFBBD5E0FFBAD4DFFFB9D3DEFFB9D2DDFFB9D2DDFFB9D2DDFFB9D2DDFFB9D2
+      DDFFB8D1DCFFCBDEE8FFB7CDDBFF7393A7DD0000001B00000003000000091C23
+      27327D9FB4FFDEEBF5FFBBD4DFFFBBD3DEFFBBD3DEFFBBD3DEFFBBD3DEFFBBD3
+      DEFFBBD3DEFFBBD3DEFFBDD5E0FFC1DAE6FFC6E0EBFFC8E3EEFFC8E3EEFFC6E0
+      EBFFC1DAE6FFBDD5E0FFBBD3DEFFBBD3DEFFBBD3DEFFBBD3DEFFBBD3DEFFBBD3
+      DEFFBBD3DEFFBBD4DFFFDEEBF5FF7D9FB4FF1C23273200000009000000115F7A
+      8A8DA5BFCEFFD1E3EEFFBBD4DFFFBCD4DFFFBDD6E1FFBED6E1FFBED6E1FFBDD6
+      E1FFBDD5E0FFBDD6E1FFC2DBE7FF96A6AFFF3A393BFF292424FF292424FF3A39
+      3BFF96A6AFFFC2DBE7FFBDD6E1FFBDD5E0FFBDD6E1FFBED6E1FFBED6E1FFBDD6
+      E1FFBCD4DFFFBBD4DFFFD1E3EEFFA5BFCEFF5F7A8A8D00000011000000157393
+      A7DABFD4E0FFC8DDE7FFBFD6E3FFC2DAE7FFC6DFECFFC8E1EFFFC8E2EFFFC7E0
+      EEFFC5DDEAFFC3DBE8FFC9E2F0FF322D2BFF3E3B3AFF423F3FFF423F3FFF3E3B
+      3AFF322D2BFFC9E2F0FFC3DBE8FFC5DDEAFFC7E0EEFFC8E2EFFFC8E1EFFFC6DF
+      ECFFC2DAE7FFBFD6E3FFC8DDE7FFBFD4E0FF7393A7DA0000001500000016789B
+      B0FFDBEBF5FFC1D8E3FFC4DBE9FFB3C6D1FF615E5EFF534D4AFF544E4BFF5955
+      54FF7E8287FFBBD2DDFFCFE8F7FF423D3BFF4B4847FF4E4B4BFF4E4B4BFF4B48
+      47FF423D3BFFCFE8F7FFBBD2DDFF7E8286FF595554FF524E4BFF534D4AFF5F5E
+      5EFFB3C6D1FFC4DBE9FFC1D8E3FFDBEBF5FF789BB0FF0000001600000016779A
+      AFFFE2F2F9FFC2D9E7FFBBD0DBFF575352FF575351FF595555FF595554FF5551
+      51FF504D4BFF53504FFF9FAEB6FFAABBC5FF605E5EFF524C4AFF524C4AFF605E
+      5EFFAABBC5FF9FAEB6FF53504FFF504C4BFF555250FF575554FF595554FF5753
+      51FF575352FFBBD0DBFFC2D9E7FFE2F2F9FF779AAFFF0000001600000016779A
+      AFFFE3F4FBFFC8DEECFF848C91FF524F4DFF575453FF575353FF52504FFF4C49
+      49FF474443FF454040FF413C3AFF9BAAB3FFD1EAF9FFCEE6F4FFCEE6F4FFD1EA
+      F9FF9BAAB3FF413C3AFF44403EFF474343FF4C4949FF52504FFF575353FF5654
+      53FF524D4DFF858C91FFC8DFECFFE3F4FBFF779AAFFF0000001600000016779A
+      AFFFE5F5FDFFCCE3F2FF5A5959FF52504EFF555252FF504D4DFF555351FFEDED
+      ECFFFFFFFFFFFFFFFFFFEAE8E6FF464240FFA9B9C4FFCAE0EEFFCAE0EEFFA9B9
+      C4FF464240FFEAE8E6FFFFFFFFFFFFFFFFFFEDEDECFF555351FF504D4DFF5452
+      51FF524E4EFF5A5859FFCCE3F2FFE5F5FDFF779AAFFF0000001600000015779A
+      AFFFE7F7FFFFCFE7F5FF474240FF514E4DFF504E4EFF484545FFD0CFCEFFA8AB
+      B9FF2A314FFF28304DFFA4A9B6FFC9C6C3FF454444FFCFE7F4FFD0E7F4FF4544
+      45FFC9C7C4FFA6AAB7FF29314FFF28314DFFA6A9B8FFCFCECDFF484545FF504E
+      4EFF514D4DFF464140FFCFE6F5FFE7F7FFFF779AAFFF0000001500000011789A
+      AFFFE1F3FCFFC9DFECFF453F3EFF4E4C4CFF4C4A4AFF413E3EFFFFFFFFFF2A32
+      4EFF323B56FF2B334FFF1E2745FFFFFFFFFF2C2727FFD8EBF9FFCCE0ECFF2E29
+      28FFFFFFFFFF29314CFF323A55FF2B334FFF1F2846FFFFFFFFFF3F3D3DFF4C4B
+      4BFF4E4A4AFF433F3DFFD4EAF8FFE1F3FCFF789AAFFF00000011000000097595
+      A9D6C6DCE9FFD4E7F3FF3F3B39FF4A4848FF494747FF3C393BFFFFFFFFFF262E
+      4AFF2B324EFFFFEED2FFFFFEFBFFFFFFFBFF433F3DFFDCEFFBFFD2E3EFFF2824
+      25FFFFFFFFFF252E49FF2B334EFFFFEED2FFFFFEFAFFFFFFFFFF3A383AFF4947
+      47FF4A4748FF3F3A39FFDDF1FEFFC5DCE8FF7495A9D600000009000000036C8A
+      9C7CAAC4D5FFE6FAFFFF4D4D4DFF454242FF464444FF393739FFFFFFFFFF9999
+      A0FF192340FFF0E1C8FFFFFFFFFFFFFEEDFF373539FFDEF0FCFFDFF1FDFF3938
+      3AFFFFFFF4FF97979BFF1A2340FFF0E1C8FFFFFFFFFFFFFFFFFF373638FF4644
+      44FF444142FF4D4C4DFFE5FAFFFFAAC4D4FF6C8A9C7C00000003000000003543
+      4C1A7FA1B4FFEEFFFFFF888F96FF3B3736FF413E3FFF393739FFBEB9AEFFFFFF
+      F1FFFFFCE9FFFEF4E2FFFFF3DFFFAAA196FF7F858AFFDFEEF8FFDFEEF8FF7E84
+      8BFFAEA497FFFFFAE6FFFFF9E5FFFFF5E4FFFFFAEAFFBBB4ABFF383739FF413E
+      3FFF3A3636FF888F96FFEEFFFFFF7FA0B4FF37464F1900000000000000000000
+      000B7898ADD6C3DBE8FFE6FAFFFF71747AFF353131FF373435FF3C393AFFD4CB
+      BAFFFFF8E1FFFFF3DAFFC4B9A6FF707377FFE3F2FCFFDEECF5FFDEECF5FFE3F2
+      FCFF707378FFC5BAA6FFFFF3DBFFFFF7E0FFD3C8B8FF3A393AFF363435FF3531
+      31FF71757BFFE6FAFFFFC2DBE8FF7698ACD60000000900000000000000040000
+      00172C373D5683A7BCFFE9FCFFFFDEF1FFFF9AA5AFFF4C4D4FFF262424FF201D
+      1EFF181719FF3C3D42FF98A0A8FFE7F3FDFFE2EDF7FFE0EBF4FFE0EBF4FFE2ED
+      F7FFE7F3FDFF98A0A8FF3C3D42FF181619FF201D1FFF262424FF4C4D4FFF9AA6
+      AFFFDFF3FFFFEAFFFFFF83A8BEFF222C324200000015000000040000000D0000
+      002F161210E961747FFF9EBED1FFEAFDFFFFD7E8F7FFD9ECFBFFEEFBFFFFF3FE
+      FFFFF1FCFFFFEEF9FFFFE9F4FDFFE6F0F8FFE4EEF6FFE3EDF5FFE3EDF5FFE4EE
+      F6FFE6F0F8FFE9F4FDFFEEF9FFFFF1FCFFFFF3FEFFFFEEFBFFFFDAEDFCFFD8EB
+      FBFFEEFFFFFF83878BFF505355FF13100EBD0000002E0000000D000000141E1E
+      1DBF423F3EFF545150FF7494A6FFBCD7E5FFE7FAFFFFD2E3F2FFD4E4F2FFE9F2
+      FAFFEAF2F9FFE8F1F8FFE7F0F7FFE6EFF6FFE6EFF6FFE6EFF6FFE6EFF6FFE6EF
+      F6FFE6EFF6FFE7F0F7FFE8F1F8FFEAF2F9FFE9F2FAFFD4E5F3FFD4E6F5FFECFF
+      FFFF848A8CFF4A4645FF534F4FFF43403FFF1E1D1DC100000015000000152323
+      23FF514F4EFF4B4847FF484544FF7290A4FFBCD7E6FFE9FCFFFFD5E6F4FFD0E0
+      EFFFE5EEF6FFEBF3F9FFEBF2F8FFEAF2F8FFE9F1F8FFE9F1F8FFE9F1F8FFE9F1
+      F8FFEAF2F8FFEBF2F8FFEBF3F9FFE5EEF6FFD0E0EFFFD6E8F6FFEFFFFFFF8085
+      87FF423E3DFF494747FF4D4B4BFF514F4FFF232323FF000000150000000D2323
+      23FF484546FF444243FF413E3EFF403D3EFF7291A3FF9FBFD2FFE8FCFFFFDFF0
+      FCFFD2E2F1FFD8E5F3FFE3ECF6FFEBF1F8FFEFF5FAFFEFF5FAFFEFF5FAFFEFF5
+      FAFFEBF1F8FFE3ECF6FFD8E5F3FFD2E2F1FFE0F0FCFFEBFFFFFF72777CFF3935
+      35FF413E3FFF444142FF454344FF484547FF232323FF0000000D000000042323
+      23B3353335FF3D3C3DFF3C3B3BFF3A3737FF3A3838FF586B77FF81A4BBFFC2DB
+      E6FFEDFFFFFFE2F5FEFFDAEBF7FFD3E3F2FFD2E1F1FFD2E1F1FFD2E1F1FFD2E1
+      F1FFD3E3F2FFDAEBF7FFE2F5FEFFEDFFFFFFC2DCE7FF83A8BFFF3B3E42FF3936
+      37FF3C3B3CFF3C3B3CFF3D3C3DFF353335FF232323B300000004000000000000
+      0003232323AE2F2F30FF353436FF343335FF2C2A2BFF16120FA85A738219789B
+      AFD17D9EB3FFABC6D5FFC9E1ECFFE8FBFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFF
+      FFFFE8FBFFFFC9E1ECFFABC6D5FF7D9EB3FF799BAFD15C76851A181412A92D2C
+      2DFF353436FF353436FF2F2F30FF232323AE0000000300000000000000000000
+      000000000004242424B0242524FF242424FF232322EA00000005000000000000
+      0000627D8C0E7696A9727799ADD17799AEFF7699AEFF7698ADFF7698ADFF7699
+      AEFF7799AEFF7799ADD17696A972627D8C0E0000000000000000000000042222
+      22AF242424FF242524FF242424B0000000040000000000000000
+    }
+    PopupMode = False
+    StateNormal.Color = 14803425
+    StateNormal.BorderColor = 11382189
+    StateNormal.BorderWidth = 1
+    StateHover.Color = 16511461
+    StateHover.BorderColor = 14120960
+    StateHover.BorderWidth = 1
+    StateActive.Color = 16245964
+    StateActive.BorderColor = 10048512
+    StateActive.BorderWidth = 1
+    StateDisabled.Color = 12566463
+    StateDisabled.BorderColor = clBlack
+    StateDisabled.BorderWidth = 1
+  end
+  object ColorSpeedButton3: TColorSpeedButton
+    Left = 328
+    Height = 55
+    Top = 17
+    Width = 144
+    Caption = 'Popup'
+    Glyph.Data = {
+      36100000424D3610000000000000360000002800000020000000200000000100
+      2000000000000010000064000000640000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000303030F010101CF010101CF0303
+      030F000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000505050F040404CF040404FF040404FF0404
+      04CF0505050F0000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000808081F070707CF070707FF070707FF070707FF0707
+      07FF070707CF0808081F00000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000A0A0A2F0A0A0AEF0A0A0AFF0A0A0AFF0A0A0AFF0A0A0AFF0A0A
+      0AFF0A0A0AFF0A0A0AEF0A0A0A2F000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000D0D0D2F0C0C0CEF0C0C0CFF0C0C0CFF0C0C0CFF0C0C0CFF0C0C0CFF0C0C
+      0CFF0C0C0CFF0C0C0CFF0C0C0CEF0D0D0D2F0000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000001010
+      104F0F0F0FEF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F
+      0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FEF1010104F00000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000001212125F1212
+      12FF121212FF121212FF121212FF121212FF121212FF121212FF121212FF1212
+      12FF121212FF121212FF121212FF121212FF121212FF1212125F000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000001515155F141414FF1414
+      14FF141414FF141414FF141414FF141414FF141414FF1414145F1414145F1414
+      14FF141414FF141414FF141414FF141414FF141414FF141414FF1515155F0000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000001818188F171717FF171717FF1717
+      17FF171717FF171717FF171717FF171717FF1717175F00000000000000001717
+      175F171717FF171717FF171717FF171717FF171717FF171717FF171717FF1818
+      188F000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000001A1A1A9F1A1A1AFF1A1A1AFF1A1A1AFF1A1A
+      1AFF1A1A1AFF1A1A1AFF1A1A1AEF1919195F0000000000000000000000000000
+      00001919195F1A1A1AEF1A1A1AFF1A1A1AFF1A1A1AFF1A1A1AFF1A1A1AFF1A1A
+      1AFF1A1A1A9F0000000000000000000000000000000000000000000000000000
+      000000000000000000001D1D1D9F1D1D1DFF1D1D1DFF1D1D1DFF1D1D1DFF1D1D
+      1DFF1D1D1DFF1C1C1CEF1C1C1C2F000000000000000000000000000000000000
+      0000000000001C1C1C2F1C1C1CEF1D1D1DFF1D1D1DFF1D1D1DFF1D1D1DFF1D1D
+      1DFF1D1D1DFF1D1D1D9F00000000000000000000000000000000000000000000
+      00002121210F1F1F1FCF1F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFF1F1F
+      1FFF1F1F1FEF1F1F1F2F00000000000000000000000000000000000000000000
+      000000000000000000001F1F1F2F1F1F1FEF1F1F1FFF1F1F1FFF1F1F1FFF1F1F
+      1FFF1F1F1FFF1F1F1FFF1F1F1FCF2121210F0000000000000000000000002424
+      240F222222CF222222FF222222FF222222FF222222FF222222FF222222FF2222
+      22EF2121212F0000000000000000000000000000000000000000000000000000
+      00000000000000000000000000002121212F222222EF222222FF222222FF2222
+      22FF222222FF222222FF222222FF222222CF2424240F000000002626261F2525
+      25CF252525FF252525FF252525FF252525FF252525FF252525FF252525EF2424
+      242F000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000002424242F252525EF252525FF2525
+      25FF252525FF252525FF252525FF252525FF252525CF2626261F282828EF2828
+      28FF282828FF282828FF282828FF282828FF282828FF272727CF2727271F0000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000002727271F272727CF2828
+      28FF282828FF282828FF282828FF282828FF282828FF282828EF2A2A2A8F2A2A
+      2AFF2A2A2AFF2A2A2AFF2A2A2AFF2A2A2AFF2A2A2ACF2A2A2A0F000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000002A2A2A0F2A2A
+      2ACF2A2A2AFF2A2A2AFF2A2A2AFF2A2A2AFF2A2A2AFF2A2A2A8F000000002D2D
+      2DAF2D2D2DFF2D2D2DFF2D2D2DFF2D2D2DCF2C2C2C0F00000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000002C2C
+      2C0F2D2D2DCF2D2D2DFF2D2D2DFF2D2D2DFF2D2D2DAF00000000000000002F2F
+      2F0F2F2F2FCF303030FF2F2F2FCF2F2F2F0F0000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00002F2F2F0F2F2F2FCF303030FF2F2F2FCF2F2F2F0F00000000000000000000
+      00003232321F323232AF3232320F000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000003232320F323232AF3232321F0000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
+    }
+    PopupMenu = PopupMenu1
+    PopupMode = True
+    StateNormal.Color = 14803425
+    StateNormal.BorderColor = 11382189
+    StateNormal.BorderWidth = 1
+    StateHover.Color = 16511461
+    StateHover.BorderColor = 14120960
+    StateHover.BorderWidth = 1
+    StateActive.Color = 16245964
+    StateActive.BorderColor = 10048512
+    StateActive.BorderWidth = 1
+    StateDisabled.Color = 12566463
+    StateDisabled.BorderColor = clBlack
+    StateDisabled.BorderWidth = 1
+  end
+  object Memo1: TMemo
+    Left = 8
+    Height = 329
+    Top = 88
+    Width = 532
+    Lines.Strings = (
+      'Set the style with the properties'
+      '* Color'
+      '* BorderColor'
+      '* BorderWidth'
+      ''
+      'For each state'
+      '* StateNormal'
+      '* StateHover (mouse over)'
+      '* StateActive (mouse click)'
+      '* StateDisabled (enabled=false)'
+      ''
+      'Plain color'
+      'If BorderWidth is 0 the button is only'
+      'painted with the Color property'
+      'only (for example StateNormal.Color)'
+      ''
+      'Popup'
+      'To use with a PopupMenu set PopupMode'
+      'to True in your button and set AutoPopup'
+      'to False in your asociated PopupMenu'
+    )
+    ScrollBars = ssAutoVertical
+    TabOrder = 0
+  end
+  object PopupMenu1: TPopupMenu
+    AutoPopup = False
+    Left = 496
+    Top = 24
+    object MenuItem1: TMenuItem
+      Caption = 'MenuItem1'
+      OnClick = MenuItem1Click
+    end
+  end
+end

+ 44 - 0
test/test_colorspeedbutton/umain.pas

@@ -0,0 +1,44 @@
+unit umain;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
+  Menus, ColorSpeedButton;
+
+type
+
+  { TForm1 }
+
+  TForm1 = class(TForm)
+    ColorSpeedButton1: TColorSpeedButton;
+    ColorSpeedButton2: TColorSpeedButton;
+    ColorSpeedButton3: TColorSpeedButton;
+    Memo1: TMemo;
+    MenuItem1: TMenuItem;
+    PopupMenu1: TPopupMenu;
+    procedure MenuItem1Click(Sender: TObject);
+  private
+
+  public
+
+  end;
+
+var
+  Form1: TForm1;
+
+implementation
+
+{$R *.lfm}
+
+{ TForm1 }
+
+procedure TForm1.MenuItem1Click(Sender: TObject);
+begin
+
+end;
+
+end.
+

+ 2 - 2
update_bgracontrols_force.json

@@ -6,9 +6,9 @@
   "UpdatePackageFiles" : [
     {
       "ForceNotify" : true,
-      "InternalVersion" : 3,
+      "InternalVersion" : 4,
       "Name" : "bgracontrols.lpk",
-      "Version" : "4.3.2.0"
+      "Version" : "4.3.3.0"
     },
     {
       "ForceNotify" : false,