📄 buttontimer.pas
字号:
unit ButtonTimer;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,stdCtrls,Controls, Forms,
Dialogs,ExtCtrls;
type
TButtonTimer = class(TButton)
private
{ Private declarations }
FTimer:TTimer;
FInterval:Integer;
FOnPush: TNotifyEvent;
protected
procedure TimerTrigger(Sender:TObject);
Procedure SetInterval(Value :integer);
procedure MyMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MyMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
public
{ Public declarations }
Constructor Create(AOwner:TComponent); override;
Destructor Destroy; override;
published
{ Published declarations }
property Interval :Integer read FInterval write SetInterval default 200;
property OnPush: TNotifyEvent read FOnPush write FOnPush;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TButtonTimer]);
end;
Constructor TButtonTimer.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
FTimer:=TTimer.Create(self);
with FTimer do begin
Ontimer:=TimerTrigger;
Enabled:=false;
end;
FInterval := 200;
FTimer.Interval := 200;
OnMouseDown:= MyMouseDown;
OnMouseUp := MyMouseUp;
end;
Destructor TButtonTimer.Destroy;
begin
FTimer.free;
inherited Destroy;
end;
procedure TButtonTimer.SetInterval(Value :integer);
begin
FInterval:=value;
FTimer.Interval:=value;
end;
procedure TButtonTimer.TimerTrigger(Sender: TObject);
begin
if assigned(FOnPush) then
FOnPush(self);
end;
procedure TButtonTimer.MyMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FTimer.enabled:=true;
end;
procedure TButtonTimer.MyMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FTimer.enabled:=False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -