unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, QButton;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
BtnPrimary: TQButton;
BtnOutline: TQButton;
BtnDisabled: TQButton;
BtnToggleA: TQButton;
BtnToggleB: TQButton;
BtnToggleC: TQButton;
BtnToggleD: TQButton;
BtnRepeat: TQButton;
BtnModal: TQButton;
FCounter: Integer; // Clicks counter
procedure BtnPrimaryClick(Sender: TObject);
procedure BtnRepeatClick(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Self.Width := 450;
Self.Height := 250;
BtnPrimary := TQButton.Create(Self);
BtnPrimary.Parent := Self;
BtnPrimary.SetBounds(20, 20, 120, 50);
BtnPrimary.Caption := 'Save File'#13#10'💾';
BtnPrimary.Color := $00FCFCFC;
BtnPrimary.BorderColor := $00CCCCCC;
BtnPrimary.BorderWidth := 1;
BtnPrimary.RoundCorners := True;
BtnPrimary.CornerRadius := 15;
BtnPrimary.Font.Color := clBlack;
BtnPrimary.Font.Style := [];
BtnPrimary.UseHoverColor := True;
BtnPrimary.HoverColor := $00FEE0BD;
BtnPrimary.PressedColor := clHighlight;
BtnPrimary.OnClick := @BtnPrimaryClick;
BtnOutline := TQButton.Create(Self);
BtnOutline.Parent := Self;
BtnOutline.SetBounds(160, 20, 120, 50);
BtnOutline.Caption := 'Delete'#13#10'🗑️';
BtnOutline.Color := clWhite;
BtnOutline.Font.Color := clMaroon;
BtnOutline.Font.Style := [fsBold];
BtnOutline.RoundCorners := False; // Square corners
BtnOutline.BorderColor := clBlue;
BtnOutline.BorderWidth := 5;
BtnOutline.HoverColor := clRed;
BtnDisabled := TQButton.Create(Self);
BtnDisabled.Parent := Self;
BtnDisabled.SetBounds(300, 20, 120, 50);
BtnDisabled.Caption := 'No Access'#13#10'🚫';
BtnDisabled.CornerRadius := Width;//Ellipse
BtnDisabled.Enabled := False;
//Groupped Toggle Button A
BtnToggleA := TQButton.Create(Self);
BtnToggleA.Parent := Self;
BtnToggleA.SetBounds(20, 90, 120, 50);
BtnToggleA.Caption := 'Mode A'#13#10'🔘';
BtnToggleA.Color := clAqua;
BtnToggleA.DownColor := clTeal;
BtnToggleA.Font.Color := clBlack;
BtnToggleA.Toggleable := True;
BtnToggleA.GroupIndex := 1;
BtnToggleA.Down := True;
//Groupped Toggle Button B
BtnToggleB := TQButton.Create(Self);
BtnToggleB.Parent := Self;
BtnToggleB.SetBounds(160, 90, 120, 50);
BtnToggleB.Caption := 'Mode B'#13#10'⭕';
BtnToggleB.Color := clAqua;
BtnToggleB.DownColor := clTeal;
BtnToggleB.Font.Color := clBlack;
BtnToggleB.Toggleable := True;
BtnToggleB.GroupIndex := 1;
//Groupped Toggle Button C
BtnToggleC := TQButton.Create(Self);
BtnToggleC.Parent := Self;
BtnToggleC.SetBounds(45, 150, 70, 70);
BtnToggleC.Caption := 'Mode C'#13#10'✔️';
BtnToggleC.Color := clAqua;
BtnToggleC.CornerRadius:=BtnToggleC.Width;
BtnToggleC.DownColor := clTeal;
BtnToggleC.Font.Color := clBlack;
BtnToggleC.Toggleable := True;
BtnToggleC.GroupIndex := 1;
//Groupped Toggle Button D
BtnToggleD := TQButton.Create(Self);
BtnToggleD.Parent := Self;
BtnToggleD.SetBounds(160, 160, 120, 50);
BtnToggleD.Caption := 'Mode D'#13#10'✖️';
BtnToggleD.Color := clAqua;
BtnToggleD.DownColor := clTeal;
BtnToggleD.Font.Color := clBlack;
BtnToggleD.Toggleable := True;
BtnToggleD.GroupIndex := 1;
//Continuous Repeat Button
BtnRepeat := TQButton.Create(Self);
BtnRepeat.Parent := Self;
BtnRepeat.SetBounds(300, 90, 120, 50);
FCounter := 0;
BtnRepeat.Caption := 'Hold Me!'#13#10'Count: 0';
BtnRepeat.Color := clFuchsia;
BtnRepeat.Font.Color := clWhite;
BtnRepeat.RepeatClick := True;
BtnRepeat.RepeatInterval := 150;
BtnRepeat.OnClick := @BtnRepeatClick;
//Modal Feature Button (Auto-closes the form)
BtnModal := TQButton.Create(Self);
BtnModal.Parent := Self;
BtnModal.SetBounds(300, 160, 120, 50);
BtnModal.Caption := 'Close Form'#13#10'(mrCancel)';
BtnModal.Color := clRed;
BtnModal.Font.Color := clWhite;
BtnModal.Font.Style := [fsBold];
BtnModal.CornerRadius := 10;
// Automatically acts as a cancel button and closes the form! No OnClick needed.
BtnModal.ModalResult := mrCancel;
end;
procedure TForm1.BtnPrimaryClick(Sender: TObject);
begin
ShowMessage('Primary Action Executed!');
end;
procedure TForm1.BtnRepeatClick(Sender: TObject);
begin
Inc(FCounter);
BtnRepeat.Caption := 'Hold Me!'#13#10'Count: ' + IntToStr(FCounter);
end;
end.