umain.pas 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. unit umain;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, StdCtrls, Spin, EditBtn,
  6. ColorBox, BGRAFlashProgressBar, BCTrackbarUpdown, BGRASpeedButton, ColorSpeedButton, BGRABitmap, BGRABitmapTypes;
  7. type
  8. { TForm1 }
  9. TForm1 = class(TForm)
  10. btBackgroundColor: TColorSpeedButton;
  11. btFontColor: TColorSpeedButton;
  12. btBarColorM: TColorSpeedButton;
  13. btGraphAddValue: TBGRASpeedButton;
  14. btGraphTest: TBGRASpeedButton;
  15. btTimerPlayPause: TBGRASpeedButton;
  16. btTimerPlayPause1: TBGRASpeedButton;
  17. btTimerPlayPause2: TBGRASpeedButton;
  18. btTimerStart: TBGRASpeedButton;
  19. cbCaptionPercent: TCheckBox;
  20. cbBackgroundRandom: TCheckBox;
  21. cbCaptionPercent1: TCheckBox;
  22. cbCaptionPercentM: TCheckBox;
  23. cbShowDividers: TCheckBox;
  24. cbShowDividersY: TCheckBox;
  25. cbShowYLine: TCheckBox;
  26. cbTimerAutoStart: TCheckBox;
  27. cbTimerAutoStart1: TCheckBox;
  28. cbRandG: TCheckBox;
  29. cbShowBarAnimation: TCheckBox;
  30. ColorDialog1: TColorDialog;
  31. btBarColor: TColorSpeedButton;
  32. edCaption: TEdit;
  33. edMax: TFloatSpinEdit;
  34. edMin: TFloatSpinEdit;
  35. edValueSub1: TFloatSpinEdit;
  36. edValue2: TFloatSpinEdit;
  37. edYLineCaption: TEdit;
  38. edYLineAfter: TEdit;
  39. edYLineDigits: TSpinEdit;
  40. edCaptionTimerFormat: TEdit;
  41. BGRAMaxMProgress: TBGRAFlashProgressBar;
  42. edGraphValue: TFloatSpinEdit;
  43. edGraphValueY: TFloatSpinEdit;
  44. edMarqueeBounce: TSpinEdit;
  45. edMarqueeWidth: TBCTrackbarUpdown;
  46. edMax2: TFloatSpinEdit;
  47. edMaxY: TFloatSpinEdit;
  48. edMin2: TFloatSpinEdit;
  49. edMinY: TFloatSpinEdit;
  50. edValueSub: TFloatSpinEdit;
  51. edValue: TFloatSpinEdit;
  52. edValue1: TFloatSpinEdit;
  53. GroupBox1: TGroupBox;
  54. GroupBox2: TGroupBox;
  55. Label10: TLabel;
  56. Label13: TLabel;
  57. Label14: TLabel;
  58. Label15: TLabel;
  59. Label16: TLabel;
  60. Label17: TLabel;
  61. Label18: TLabel;
  62. Label19: TLabel;
  63. Label2: TLabel;
  64. Label20: TLabel;
  65. Label21: TLabel;
  66. Label22: TLabel;
  67. Label24: TLabel;
  68. Label3: TLabel;
  69. Label4: TLabel;
  70. Label5: TLabel;
  71. Label6: TLabel;
  72. Label7: TLabel;
  73. Label8: TLabel;
  74. Label9: TLabel;
  75. lbCount: TLabel;
  76. PageControl1: TPageControl;
  77. edCaptionDigits: TSpinEdit;
  78. rgCaptionAlign: TRadioGroup;
  79. rgCaptionAlignM: TRadioGroup;
  80. rgMarqueeDirection: TRadioGroup;
  81. rgMarqueeSpeed: TRadioGroup;
  82. rgMarqueeWidthType: TRadioGroup;
  83. TabNormal: TTabSheet;
  84. TabMarquee: TTabSheet;
  85. TabMultiProgress: TTabSheet;
  86. TabTimer: TTabSheet;
  87. TabGraph: TTabSheet;
  88. TimeEdit1: TTimeEdit;
  89. procedure BCTrackbarUpdown1Change(Sender: TObject; AByUser: boolean);
  90. procedure BGRAMaxMProgressTimerEnd(Sender: TObject);
  91. procedure btBarColorClick(Sender: TObject);
  92. procedure btGraphAddValueClick(Sender: TObject);
  93. procedure btGraphTestClick(Sender: TObject);
  94. procedure btTimerPlayPause2Click(Sender: TObject);
  95. procedure btTimerPlayPauseClick(Sender: TObject);
  96. procedure btTimerStartClick(Sender: TObject);
  97. procedure cbBackgroundRandomChange(Sender: TObject);
  98. procedure cbCaptionPercentMChange(Sender: TObject);
  99. procedure cbMarqueeWidthChange(Sender: TObject);
  100. procedure cbCaptionPercentChange(Sender: TObject);
  101. procedure cbShowBarAnimationChange(Sender: TObject);
  102. procedure cbShowDividersChange(Sender: TObject);
  103. procedure cbShowDividersYChange(Sender: TObject);
  104. procedure cbShowYLineChange(Sender: TObject);
  105. procedure cbTimerAutoStartChange(Sender: TObject);
  106. procedure edCaptionChange(Sender: TObject);
  107. procedure edCaptionDigitsChange(Sender: TObject);
  108. procedure edMarqueeBounceChange(Sender: TObject);
  109. procedure edMaxChange(Sender: TObject);
  110. procedure edMaxYChange(Sender: TObject);
  111. procedure edMinChange(Sender: TObject);
  112. procedure edMinYChange(Sender: TObject);
  113. procedure edValueSubChange(Sender: TObject; AByUser: boolean);
  114. procedure edCaptionTimerFormatChange(Sender: TObject);
  115. procedure edValueChange(Sender: TObject; AByUser: boolean);
  116. procedure edMarqueeWidthChange(Sender: TObject; AByUser: boolean);
  117. procedure edYLineAfterChange(Sender: TObject);
  118. procedure edYLineCaptionChange(Sender: TObject);
  119. procedure edYLineDigitsChange(Sender: TObject);
  120. procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
  121. procedure FormCreate(Sender: TObject);
  122. procedure FormShow(Sender: TObject);
  123. procedure PageControl1Change(Sender: TObject);
  124. procedure rgCaptionAlignClick(Sender: TObject);
  125. procedure rgCaptionAlignMClick(Sender: TObject);
  126. procedure rgMarqueeDirectionClick(Sender: TObject);
  127. procedure rgMarqueeWidthTypeClick(Sender: TObject);
  128. procedure rgMarqueeSpeedClick(Sender: TObject);
  129. private
  130. { private declarations }
  131. aCount: Integer;
  132. Closing: Boolean;
  133. public
  134. { public declarations }
  135. end;
  136. var
  137. Form1: TForm1;
  138. implementation
  139. uses Math;
  140. {$R *.lfm}
  141. { TForm1 }
  142. procedure TForm1.btTimerPlayPause2Click(Sender: TObject);
  143. begin
  144. BGRAMaxMProgress.StepIt(0);
  145. end;
  146. procedure TForm1.btTimerPlayPauseClick(Sender: TObject);
  147. begin
  148. BGRAMaxMProgress.TimerPlayPause;
  149. end;
  150. procedure TForm1.btTimerStartClick(Sender: TObject);
  151. begin
  152. BGRAMaxMProgress.TimerReStart;
  153. end;
  154. procedure TForm1.cbBackgroundRandomChange(Sender: TObject);
  155. begin
  156. BGRAMaxMProgress.BackgroundRandomize:= cbBackgroundRandom.Checked;
  157. end;
  158. procedure TForm1.cbCaptionPercentMChange(Sender: TObject);
  159. begin
  160. BGRAMaxMProgress.CaptionShowPercentSub:= cbCaptionPercentM.Checked;
  161. end;
  162. procedure TForm1.cbMarqueeWidthChange(Sender: TObject);
  163. begin
  164. BGRAMaxMProgress.MarqueeWidth:= edMarqueeWidth.Value;
  165. end;
  166. procedure TForm1.cbCaptionPercentChange(Sender: TObject);
  167. begin
  168. if Sender = cbCaptionPercent then
  169. cbCaptionPercent1.Checked := cbCaptionPercent.Checked
  170. else
  171. cbCaptionPercent.Checked := cbCaptionPercent1.Checked;
  172. BGRAMaxMProgress.CaptionShowPercent:= cbCaptionPercent.Checked;
  173. end;
  174. procedure TForm1.cbShowBarAnimationChange(Sender: TObject);
  175. begin
  176. BGRAMaxMProgress.ShowBarAnimation:= cbShowBarAnimation.Checked;
  177. end;
  178. procedure TForm1.cbShowDividersChange(Sender: TObject);
  179. begin
  180. BGRAMaxMProgress.ShowDividers:= cbShowDividers.Checked;
  181. end;
  182. procedure TForm1.cbShowDividersYChange(Sender: TObject);
  183. begin
  184. BGRAMaxMProgress.GraphShowYDividers:= cbShowDividersY.Checked;
  185. if BGRAMaxMProgress.GraphShowYDividers then
  186. begin
  187. BGRAMaxMProgress.ShowDividers:= True;
  188. cbShowDividers.Checked:= True;
  189. end;
  190. end;
  191. procedure TForm1.cbShowYLineChange(Sender: TObject);
  192. begin
  193. BGRAMaxMProgress.GraphShowYLine:= cbShowYLine.Checked;
  194. if BGRAMaxMProgress.GraphShowYLine then
  195. begin
  196. BGRAMaxMProgress.BackgroundColor:= clWhite;
  197. BGRAMaxMProgress.BackgroundRandomize:= False;
  198. cbBackgroundRandom.Checked:= False;
  199. btBackgroundColor.StateNormal.Color:= clWhite;
  200. end;
  201. end;
  202. procedure TForm1.cbTimerAutoStartChange(Sender: TObject);
  203. begin
  204. BGRAMaxMProgress.TimerAutoRestart:= TCheckBox(Sender).Checked;
  205. end;
  206. procedure TForm1.edCaptionChange(Sender: TObject);
  207. begin
  208. BGRAMaxMProgress.Caption:= edCaption.Text;
  209. end;
  210. procedure TForm1.edCaptionDigitsChange(Sender: TObject);
  211. begin
  212. BGRAMaxMProgress.CaptionPercentDigits:= edCaptionDigits.Value;
  213. end;
  214. procedure TForm1.edMarqueeBounceChange(Sender: TObject);
  215. begin
  216. BGRAMaxMProgress.MarqueeBounce:= edMarqueeBounce.Value;
  217. end;
  218. procedure TForm1.edMaxChange(Sender: TObject);
  219. begin
  220. BGRAMaxMProgress.MaxValue:= TFloatSpinEdit(Sender).Value;
  221. edMax.Value:= BGRAMaxMProgress.MaxValue;
  222. edMax2.Value:= BGRAMaxMProgress.MaxValue;
  223. edValue.MaxValue:= BGRAMaxMProgress.MaxValue;
  224. edValue1.MaxValue:= BGRAMaxMProgress.MaxValue;
  225. edGraphValue.MaxValue:= BGRAMaxMProgress.MaxValue;
  226. end;
  227. procedure TForm1.edMaxYChange(Sender: TObject);
  228. begin
  229. BGRAMaxMProgress.MaxYValue:= edMaxY.Value;
  230. edGraphValueY.MaxValue:= BGRAMaxMProgress.MaxYValue;
  231. end;
  232. procedure TForm1.edMinChange(Sender: TObject);
  233. begin
  234. BGRAMaxMProgress.MinValue:= TFloatSpinEdit(Sender).Value;
  235. edMin.Value:= BGRAMaxMProgress.MinValue;
  236. edMin2.Value:= BGRAMaxMProgress.MinValue;
  237. edValue.MinValue:= BGRAMaxMProgress.MinValue;
  238. edValue1.MinValue:= BGRAMaxMProgress.MinValue;
  239. edGraphValue.MinValue:= BGRAMaxMProgress.MinValue;
  240. end;
  241. procedure TForm1.edMinYChange(Sender: TObject);
  242. begin
  243. BGRAMaxMProgress.MinYValue:= edMinY.Value;
  244. edGraphValueY.MinValue:= BGRAMaxMProgress.MinYValue;
  245. end;
  246. procedure TForm1.edValueSubChange(Sender: TObject; AByUser: boolean);
  247. begin
  248. BGRAMaxMProgress.ValueSub:= TFloatSpinEdit(Sender).Value;
  249. edValueSub.Value:= BGRAMaxMProgress.ValueSub;
  250. edValueSub1.Value:= BGRAMaxMProgress.ValueSub;
  251. end;
  252. procedure TForm1.edCaptionTimerFormatChange(Sender: TObject);
  253. begin
  254. BGRAMaxMProgress.CaptionPercentTimerFormat:= edCaptionTimerFormat.Text;
  255. end;
  256. procedure TForm1.edValueChange(Sender: TObject; AByUser: boolean);
  257. begin
  258. BGRAMaxMProgress.Value:= TFloatSpinEdit(Sender).Value;
  259. edValue.Value:= BGRAMaxMProgress.Value;
  260. edValue1.Value:= BGRAMaxMProgress.Value;
  261. edValue2.Value:= BGRAMaxMProgress.Value;
  262. end;
  263. procedure TForm1.edMarqueeWidthChange(Sender: TObject; AByUser: boolean);
  264. begin
  265. if AByUser then BGRAMaxMProgress.MarqueeWidth:= edMarqueeWidth.Value;
  266. end;
  267. procedure TForm1.edYLineAfterChange(Sender: TObject);
  268. begin
  269. BGRAMaxMProgress.GraphYLineAfter:= edYLineAfter.Text;
  270. end;
  271. procedure TForm1.edYLineCaptionChange(Sender: TObject);
  272. begin
  273. BGRAMaxMProgress.GraphYLineCaption:= edYLineCaption.Text;
  274. end;
  275. procedure TForm1.edYLineDigitsChange(Sender: TObject);
  276. begin
  277. BGRAMaxMProgress.GraphYLineDigits:= edYLineDigits.Value;
  278. end;
  279. procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
  280. begin
  281. Closing:= True;
  282. end;
  283. procedure TForm1.FormCreate(Sender: TObject);
  284. begin
  285. Closing:= False;
  286. end;
  287. procedure TForm1.FormShow(Sender: TObject);
  288. begin
  289. PageControl1.ActivePage:= TabNormal;
  290. end;
  291. procedure TForm1.PageControl1Change(Sender: TObject);
  292. begin
  293. //Update Controls
  294. if (PageControl1.ActivePage.Tag = 4)
  295. then BGRAMaxMProgress.Height:= 100 //Graph
  296. else BGRAMaxMProgress.Height:= 34;
  297. if (PageControl1.ActivePage.Tag = 3) then
  298. begin
  299. //Timer
  300. aCount:= 0;
  301. BGRAMaxMProgress.MaxValue:= TimeEdit1.Time;
  302. BGRAMaxMProgress.TimerAutoRestart:= cbTimerAutoStart.Checked;
  303. BGRAMaxMProgress.CaptionShowPercent:= cbCaptionPercent1.Checked;
  304. BGRAMaxMProgress.CaptionPercentTimerFormat:= edCaptionTimerFormat.Text;
  305. end;
  306. BGRAMaxMProgress.Style:= TBGRAPBarStyle(PageControl1.ActivePage.Tag);
  307. end;
  308. procedure TForm1.rgCaptionAlignClick(Sender: TObject);
  309. begin
  310. BGRAMaxMProgress.CaptionPercentAlign:= TAlignment(rgCaptionAlign.ItemIndex);
  311. end;
  312. procedure TForm1.rgCaptionAlignMClick(Sender: TObject);
  313. begin
  314. BGRAMaxMProgress.CaptionPercentSubAlign:= TAlignment(rgCaptionAlignM.ItemIndex);
  315. end;
  316. procedure TForm1.rgMarqueeDirectionClick(Sender: TObject);
  317. begin
  318. BGRAMaxMProgress.MarqueeDirection:= TBGRAPBarMarqueeDirection(rgMarqueeDirection.ItemIndex);
  319. end;
  320. procedure TForm1.rgMarqueeWidthTypeClick(Sender: TObject);
  321. begin
  322. BGRAMaxMProgress.MarqueeWidthType:= TBGRAPBarMarqueeWidthType(rgMarqueeWidthType.ItemIndex);
  323. // edMarqueeWidth.Enabled:= (BGRAMaxMProgress.MarqueeWidthType = pbmwFixed);
  324. end;
  325. procedure TForm1.rgMarqueeSpeedClick(Sender: TObject);
  326. begin
  327. BGRAMaxMProgress.MarqueeSpeed:= TBGRAPBarMarqueeSpeed(rgMarqueeSpeed.ItemIndex);
  328. end;
  329. procedure TForm1.BCTrackbarUpdown1Change(Sender: TObject; AByUser: boolean);
  330. begin
  331. BGRAMaxMProgress.Value := edValue.Value;
  332. end;
  333. procedure TForm1.BGRAMaxMProgressTimerEnd(Sender: TObject);
  334. begin
  335. inc(aCount);
  336. lbCount.Caption:= IntToStr(aCount);
  337. end;
  338. procedure TForm1.btBarColorClick(Sender: TObject);
  339. begin
  340. if ColorDialog1.Execute then
  341. begin
  342. if Sender=btBarColor then BGRAMaxMProgress.BarColor:=ColorDialog1.Color
  343. else
  344. if Sender=btBarColorM then BGRAMaxMProgress.BarColorSub:=ColorDialog1.Color
  345. else
  346. if Sender=btBackgroundColor then BGRAMaxMProgress.BackgroundColor:=ColorDialog1.Color
  347. else
  348. if Sender=btFontColor then BGRAMaxMProgress.Font.Color:=ColorDialog1.Color;
  349. TColorSpeedButton(Sender).StateNormal.Color:=ColorDialog1.Color;
  350. end;
  351. end;
  352. procedure TForm1.btGraphAddValueClick(Sender: TObject);
  353. begin
  354. BGRAMaxMProgress.SetValue(edGraphValue.Value, edGraphValueY.Value);
  355. end;
  356. procedure TForm1.btGraphTestClick(Sender: TObject);
  357. var
  358. i,
  359. iStep,
  360. YVal: Double;
  361. begin
  362. BGRAMaxMProgress.Style:= pbstGraph;
  363. BGRAMaxMProgress.Value:= 0;
  364. iStep:= (BGRAMaxMProgress.MaxValue-BGRAMaxMProgress.MinValue) / 100;
  365. YVal:= 50;
  366. Randomize;
  367. i:= BGRAMaxMProgress.MinValue;
  368. while (i < BGRAMaxMProgress.MaxValue) do
  369. begin
  370. i:= i+iStep;
  371. if cbRandG.Checked
  372. then YVal:= YVal+RandG(BGRAMaxMProgress.MinYValue, 10)
  373. else YVal:= Random * (BGRAMaxMProgress.MaxYValue - BGRAMaxMProgress.MinYValue) + BGRAMaxMProgress.MinYValue;
  374. BGRAMaxMProgress.SetValue(i, YVal);
  375. Application.ProcessMessages;
  376. Sleep(150);
  377. end;
  378. end;
  379. end.