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