1 unit umain;
2 
3 {$mode objfpc}{$H+}
4 
5 interface
6 
7 uses
8   Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
9   BCMDButton;
10 
11 type
12 
13   { TfrmMain }
14 
15   TfrmMain = class(TForm)
16     Label1: TLabel;
17     Label10: TLabel;
18     Label2: TLabel;
19     Label3: TLabel;
20     Label5: TLabel;
21     Label7: TLabel;
22     Label9: TLabel;
23     BCMDButton1: TBCMDButton;
24     BCMDButton10: TBCMDButton;
25     BCMDButton11: TBCMDButton;
26     BCMDButton15: TBCMDButton;
27     BCMDButton16: TBCMDButton;
28     BCMDButton17: TBCMDButton;
29     BCMDButton2: TBCMDButton;
30     BCMDButton27: TBCMDButton;
31     BCMDButton28: TBCMDButton;
32     BCMDButton29: TBCMDButton;
33     BCMDButton30: TBCMDButton;
34     BCMDButton31: TBCMDButton;
35     BCMDButton32: TBCMDButton;
36     BCMDButton5: TBCMDButton;
37     mdGetRadio: TBCMDButton;
38     mdSelect: TBCMDButton;
39     mdUnselect: TBCMDButton;
40     mdInvert: TBCMDButton;
41     BCMDButton33: TBCMDButton;
42     BCMDButton34: TBCMDButton;
43     BCMDButton35: TBCMDButton;
44     mdAnimations: TBCMDButton;
45     mdGet: TBCMDButton;
46     BCMDButton9: TBCMDButton;
47     Panel1: TPanel;
48     Panel11: TPanel;
49     Panel12: TPanel;
50     Panel13: TPanel;
51     Panel2: TPanel;
52     Panel7: TPanel;
53     Panel8: TPanel;
54     Panel9: TPanel;
55     procedure FormCreate(Sender: TObject);
56     procedure MDButton1Click(Sender: TObject);
57     procedure mdSelectClick(Sender: TObject);
58     procedure mdUnselectClick(Sender: TObject);
59     procedure mdInvertClick(Sender: TObject);
60     procedure mdAnimationsClick(Sender: TObject);
61     procedure mdGetRadioClick(Sender: TObject);
62     procedure mdGetClick(Sender: TObject);
63   private
64     procedure EnableAnimations(Control: TControl);
65     procedure DoubleBuffering(Control: TControl);
66   public
67 
68   end;
69 
70 var
71   frmMain: TfrmMain;
72 
73 implementation
74 
75 {$R *.lfm}
76 
77 { TfrmMain }
78 
79 procedure TfrmMain.mdSelectClick(Sender: TObject);
80 begin
81   BCMDButton33.SelectAll;
82 end;
83 
84 procedure TfrmMain.MDButton1Click(Sender: TObject);
85 begin
86   ShowMessage('Hello World');
87 end;
88 
89 procedure TfrmMain.FormCreate(Sender: TObject);
90 begin
91   {$ifdef windows}
92   DoubleBuffering(Self);
93   {$endif}
94 end;
95 
96 procedure TfrmMain.mdUnselectClick(Sender: TObject);
97 begin
98   BCMDButton33.UnselectAll;
99 end;
100 
101 procedure TfrmMain.mdInvertClick(Sender: TObject);
102 begin
103   BCMDButton33.InvertSelection;
104 end;
105 
106 procedure TfrmMain.mdAnimationsClick(Sender: TObject);
107 begin
108   EnableAnimations(Self);
109   // Refresh controls
110   Invalidate;
111 end;
112 
113 procedure TfrmMain.mdGetRadioClick(Sender: TObject);
114 begin
115   with BCMDButton27.GetSelected do
116   begin
117     ShowMessage(Text);
118     Free;
119   end;
120 end;
121 
122 procedure TfrmMain.mdGetClick(Sender: TObject);
123 begin
124   with BCMDButton33.GetSelected do
125   begin
126     ShowMessage(Text);
127     Free;
128   end;
129 end;
130 
131 procedure TfrmMain.EnableAnimations(Control: TControl);
132 var
133   i: integer;
134   wincontrol: TWinControl;
135 begin
136   if Control is TBCMDButton then
137     TBCMDButton(Control).Animation := mdAnimations.Checked;
138   if Control is TWinControl then
139   begin
140     wincontrol := TWinControl(Control);
141     if wincontrol.ControlCount > 0 then
142       for i := 0 to wincontrol.ControlCount - 1 do
143         EnableAnimations(wincontrol.Controls[i]);
144   end;
145 end;
146 
147 procedure TfrmMain.DoubleBuffering(Control: TControl);
148 var
149   i: integer;
150   wincontrol: TWinControl;
151 begin
152   if Control is TWinControl then
153   begin
154     wincontrol := TWinControl(Control);
155     wincontrol.DoubleBuffered := True;
156     if wincontrol.ControlCount > 0 then
157       for i := 0 to wincontrol.ControlCount - 1 do
158         DoubleBuffering(wincontrol.Controls[i]);
159   end;
160 end;
161 
162 end.
163 
164