unit mybutton;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons;
type
TMyButton = class(TCustomControl)
private
fbtnADD : TBitBtn;
fbtnSAVE : TBitBtn;
fbtnCANCEL : TBitBtn;
fRecordCount : integer;
function GetRecordCount : integer;
procedure SetRecordCount(Value : integer);
procedure BtnClick(Sender: TObject);
procedure DoParentClick;
public
constructor Create(AOwner : TComponent); override;
published
property RecordCount : integer read GetRecordCount write SetRecordCount;
end;
implementation
procedure TMyButton.BtnClick(Sender : TObject);
var
btn: TBitBtn absolute Sender;
begin
Beep;
if Sender is TBitBtn then
ShowMessageFmt('You pressed the %s button',[btn.Name]);
DoParentClick;
end;
procedure TMyButton.DoParentClick;
begin
if Assigned(OnClick) then
OnClick(Self);
end;
constructor TMyButton.Create(AOwner : TComponent);
var
btnHeight : integer = 64;
btnWidth : integer = 64;
btnMinWidth : integer = 284;
btnGap : integer = 8;
begin
inherited Create(AOwner);
fbtnADD := TBitBtn.Create(self);
With fbtnADD do
begin
Name := 'Add';
AutoSize := false;
Width := btnWidth;
Height := btnHeight;
Left := 0;
Caption := 'ADD';
SetSubComponent(true);
ControlStyle := ControlStyle - [csNoDesignSelectable];
parent := self;
OnClick := @BtnClick;
end;
fbtnSAVE := TBitBtn.Create(self);
With fbtnSAVE do
begin
Name := 'Save';
AutoSize := false;
Width := btnWidth;
Height := btnHeight;
Left := fbtnADD.Left + btnWidth + btnGap;
Caption := 'SAVE';
SetSubComponent(true);
ControlStyle := ControlStyle - [csNoDesignSelectable];
parent := self;
OnClick := @BtnClick;
end;
fbtnCANCEL := TBitBtn.Create(self);
With fbtnCANCEL do
begin
Name := 'Cancel';
AutoSize := false;
Width := btnWidth;
Height := btnHeight;
//Left := fbtnSAVE.Left + btnWidth + btnGap;
Align := alRight;
Caption := 'CANCEL';
SetSubComponent(true);
ControlStyle := ControlStyle - [csNoDesignSelectable];
parent := self;
OnClick := @BtnClick;
end;
Color := clGray;
Constraints.MaxHeight := btnHeight;
Constraints.MinHeight := btnHeight;
Constraints.MinWidth := btnMinWidth;
SetBounds(0, 0, btnMinWidth, btnHeight);
end;
function TMyButton.GetRecordCount : integer;
begin
result := fRecordCount;
end;
procedure TMyButton.SetRecordCount(Value : integer);
begin
If fRecordCount <> Value then
fRecordCount := Value;
end;
end.