关于delphi的按键控件的问题

我实现这样一个功能:鼠标持续点击按钮控件不放时每隔一段时间(可调)即可执行同一个函数。要怎么样才能实现?... 我实现这样一个功能:鼠标持续点击按钮控件不放时每隔一段时间(可调)即可执行同一个函数。
要怎么样才能实现?
展开
 我来答
没用过山寨机
2012-09-01 · 超过14用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:36.5万
展开全部
这个太简单了,放一个timer,把函数写在timer里面,timer的时间可调,Enabled设为False。
按钮的MouseDown事件上,把这个timer的Enabled设为True。鼠标按住不放时,timer就会在设定的时间重复执行函数了。
按钮的MouseUp事件上,把这个timer的Enabled设为False。鼠标放开按钮时,timer停止工作。
金山毒霸
2024-10-31 广告
大部分系统错误,是因为某些DLL文件丢失造成的,比如未安装DirectX9或DirectX 9.0组件已损坏、缺少Visual C ++库、未安装.net库。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的电脑一般都... 点击进入详情页
本回答由金山毒霸提供
qingningleyun
2012-08-31 · TA获得超过5852个赞
知道大有可为答主
回答量:2991
采纳率:30%
帮助的人:3000万
展开全部
将要调用的函数写在 Timer1Timer(Sender: TObject) 中。

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
Timer1.Interval := 3000; // 调整时间,目前 3 秒
Timer1.Enabled := True;
ggTime := 0;
Application.ProcessMessages;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
info: String;
id: Integer;
begin
ggTime := ggTime + Round(Timer1.Interval/1000);
info := Format('你已经按了 %d 秒没有放开.', [ggTime]);
id := Application.MessageBox(PChar(info), '鼠标左键被按下', MB_OK);
if id = IDOK then begin
Timer1.Enabled := False;
ggTime := 0;
end;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式