鼠标按住不放自动累加的实现

计数器

 

 

 

 

 

 

 

 


群里有人发出这么个需求,说是鼠标按住不放的同时开始计数累加1,放掉归零。
delphi 中没有鼠标按住不放的属性,只能借助MouseDown,Mouseup,加timer来实现了。
timer设置时间周期为50,可以随意调整。

 
  1. unit Unit1;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, StdCtrls, ExtCtrls;  
  8.   
  9. type  
  10.   TForm1 = class(TForm)  
  11.     Button1: TButton;  
  12.     Edit1: TEdit;  
  13.     Timer1: TTimer;  
  14.     procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;  
  15.       Shift: TShiftState; X, Y: Integer);  
  16.     procedure Timer1Timer(Sender: TObject);  
  17.     procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;  
  18.       Shift: TShiftState; X, Y: Integer);  
  19.     procedure FormCreate(Sender: TObject);  
  20.   private  
  21.     { Private declarations }  
  22.   public  
  23.     { Public declarations }  
  24.   end;  
  25.   
  26. var  
  27.   Form1: TForm1;  
  28.   
  29.   
  30. implementation  
  31.  var s:Integer;  
  32. {$R *.dfm}  
  33.   
  34. procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;  
  35.   Shift: TShiftState; X, Y: Integer);  
  36.   
  37. begin  
  38.   Timer1.Enabled:=true;  
  39. end;  
  40.   
  41. procedure TForm1.Timer1Timer(Sender: TObject);  
  42. begin  
  43.    begin  
  44.    s:=s+1;  
  45.    edit1.Text:=IntToStr(s);  
  46.   end;  
  47. end;  
  48.   
  49. procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;  
  50.   Shift: TShiftState; X, Y: Integer);  
  51. begin  
  52.  Timer1.Enabled:=False;  
  53.  s:=0;  
  54.  Edit1.Text:='0';  
  55. end;  
  56.   
  57. procedure TForm1.FormCreate(Sender: TObject);  
  58. begin  
  59.   Timer1.Enabled:=False;  
  60. end;  
  61.   
  62. end.  
分享到: