umain.pas 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. unit umain;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  6. Spin, BCNumericKeyboard, BCButton, BCTypes, BCPanel, BGRABitmapTypes;
  7. type
  8. { TForm1 }
  9. TForm1 = class(TForm)
  10. BCPanel1: TBCPanel;
  11. BCRealNumericKeyboard1: TBCRealNumericKeyboard;
  12. Edit1: TEdit;
  13. FloatSpinEdit1: TFloatSpinEdit;
  14. procedure Button1Click(Sender: TObject);
  15. procedure FormClick(Sender: TObject);
  16. procedure FormCreate(Sender: TObject);
  17. private
  18. NumericSender: TControl;
  19. public
  20. end;
  21. var
  22. Form1: TForm1;
  23. implementation
  24. {$R *.lfm}
  25. { TForm1 }
  26. { Button style }
  27. procedure BCButtonWindows8(AButton: TBCButton; cl1, cl2: TColor);
  28. begin
  29. AButton.Rounding.RoundX := 1;
  30. AButton.Rounding.RoundY := 1;
  31. AButton.RoundingDropDown.Assign(AButton.Rounding);
  32. with AButton.StateNormal do
  33. begin
  34. Background.Style := bbsColor;
  35. Background.Color := cl1;
  36. Border.Style := bboSolid;
  37. Border.Width := 1;
  38. Border.Color := cl1;
  39. Border.LightWidth := 0;
  40. Border.LightOpacity := 255;
  41. Border.Style := bboSolid;
  42. FontEx.Color := clWhite;
  43. FontEx.Shadow := False;
  44. FontEx.Style := [];
  45. end;
  46. AButton.StateHover.Assign(AButton.StateNormal);
  47. AButton.StateClicked.Assign(AButton.StateNormal);
  48. with AButton.StateHover do
  49. begin
  50. Background.Color := cl2;
  51. Border.Color := cl2;
  52. end;
  53. with AButton.StateClicked do
  54. begin
  55. Background.Color := cl2;
  56. Border.Color := cl2;
  57. end;
  58. end;
  59. procedure TForm1.Button1Click(Sender: TObject);
  60. begin
  61. if (NumericSender <> nil) and (NumericSender.Name = TControl(Sender).Name) and
  62. (BCRealNumericKeyboard1.Visible) then
  63. begin
  64. BCRealNumericKeyboard1.Hide();
  65. end
  66. else
  67. begin
  68. NumericSender := Sender as TControl;
  69. BCRealNumericKeyboard1.Panel.Left := NumericSender.Left;
  70. BCRealNumericKeyboard1.Panel.Top := NumericSender.Top + NumericSender.Height;
  71. BCRealNumericKeyboard1.Show();
  72. end;
  73. end;
  74. procedure TForm1.FormClick(Sender: TObject);
  75. begin
  76. if NumericSender <> nil then
  77. Button1Click(NumericSender);
  78. end;
  79. procedure TForm1.FormCreate(Sender: TObject);
  80. begin
  81. // Assign custom format settings
  82. DefaultFormatSettings.CurrencyString := '$';
  83. // DefaultFormatSettings.DecimalSeparator := '.';
  84. // Assign a style
  85. BCButtonWindows8(BCRealNumericKeyboard1.ButtonStyle, clGray, clSkyBlue);
  86. // Custom extra size inside the button
  87. BCRealNumericKeyboard1.ButtonStyle.SetSizeVariables(0, 0, 15, 25);
  88. // Apply the style
  89. BCRealNumericKeyboard1.UpdateButtonStyle;
  90. with BCRealNumericKeyboard1.Panel do
  91. begin
  92. BevelInner := bvNone;
  93. BevelOuter := bvNone;
  94. Background.Gradient1.StartColor := clNavy;
  95. Background.Gradient1.EndColor := clPurple;
  96. Background.Gradient1.Point1XPercent := 0;
  97. Background.Gradient1.Point1YPercent := 0;
  98. Background.Gradient1.Point2XPercent := 0;
  99. Background.Gradient1.Point2YPercent := 100;
  100. Background.Gradient1EndPercent := 100;
  101. Background.Style := bbsGradient;
  102. // Spacing around
  103. ChildSizing.TopBottomSpacing := 5;
  104. ChildSizing.LeftRightSpacing := 5;
  105. // Spacing between buttons
  106. ChildSizing.VerticalSpacing := 10;
  107. ChildSizing.HorizontalSpacing := 10;
  108. end;
  109. end;
  110. end.