buttontimer.~pas

来自「本光盘是《Delphi 7应用教程》一书的配套光盘」· ~PAS 代码 · 共 84 行

~PAS
84
字号
unit ButtonTimer;

interface

uses
 // SysUtils, Classes, Controls, StdCtrls;
    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 + =
减小字号Ctrl + -
显示快捷键?