社区
Delphi
帖子详情
button 的执行问题
Wozhiyonglangqi
2008-10-23 02:06:55
当我在极快的时候点击2下 btutton的执行情况 如下
button_onclick(){
do1,
do2,
do3,
do4,
}
当点击第一下的时候 代码开始执行到do2,这时事件还没处理完 。
后第2次的点击事件也开始了 这怎么避免
...全文
130
21
打赏
收藏
button 的执行问题
当我在极快的时候点击2下 btutton的执行情况 如下 button_onclick(){ do1, do2, do3, do4, } 当点击第一下的时候 代码开始执行到do2,这时事件还没处理完 。 后第2次的点击事件也开始了 这怎么避免
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luntanwujianhua
2008-10-24
打赏
举报
回复
幫頂
progigy
2008-10-23
打赏
举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
Self.OnClick := nil;
do1;
do2;
do3;
do4;
Self.OnClick := Button1Click;
end;
天鸽
2008-10-23
打赏
举报
回复
写线程,让电脑自己慢慢执行,反正不会出现卡在那里的现象!!
zhaoxiaohao
2008-10-23
打赏
举报
回复
可以再把光標的形狀修改一下,讓用戶相信已點完,執行后再恢復光標形狀
screen.cursor:=crhourglass;
screen.cursor:=crdefault;
gzmhero
2008-10-23
打赏
举报
回复
头尾各加一句不就好用了么?
其他办法也一样,无论怎样,都要改代码,至少要加这么类似的2句话。
Wozhiyonglangqi
2008-10-23
打赏
举报
回复
[Quote=引用 15 楼 gzmhero 的回复:]
引用 14 楼 Wozhiyonglangqi 的回复:
确实有重入的问题 如何是好
enabled:=false;
....
enabled:=true;
这样不行么?
[/Quote]改死人了 =。=
哎 苦命的娃
gzmhero
2008-10-23
打赏
举报
回复
[Quote=引用 14 楼 Wozhiyonglangqi 的回复:]
确实有重入的问题 如何是好
[/Quote]
enabled:=false;
....
enabled:=true;
这样不行么?
Wozhiyonglangqi
2008-10-23
打赏
举报
回复
确实有重入的问题 如何是好
gzmhero
2008-10-23
打赏
举报
回复
[Quote=引用 11 楼 lake_cx 的回复:]
引用楼主 Wozhiyonglangqi 的帖子:
当我在极快的时候点击2下 btutton的执行情况 如下
button_onclick(){
do1,
do2,
do3,
do4,
}
当点击第一下的时候 代码开始执行到do2,这时事件还没处理完 。
后第2次的点击事件也开始了 这怎么避免
只要button_onclick()中没有处理消息循环的代码,它会一直等到do4完成的时候才会再次响应的,所以一般你不用担心重入的问题。但是给用户的感觉不友好,如果处理的时…
[/Quote]
谁说会等到do4完成才会再次响应?
如果do1,do2,do3,do4里面的操作有能够响应系统消息的代码,那就会重入。
并且,按照楼主的代码,do1,do2,do3,do4似乎执行时间比较长,否则也不会考虑重入问题,那么执行时间长的代码,一定要加入响应系统事件的代码,
否则界面停顿,程序很不友好。所以,这里一定会重入的问题。
scutLiu
2008-10-23
打赏
举报
回复
button.enabled := false;
try
do1;
do2;
do3;
do4;
except
button.enabled := true;
end;
button.enabled := true;
lake_cx
2008-10-23
打赏
举报
回复
[Quote=引用楼主 Wozhiyonglangqi 的帖子:]
当我在极快的时候点击2下 btutton的执行情况 如下
button_onclick(){
do1,
do2,
do3,
do4,
}
当点击第一下的时候 代码开始执行到do2,这时事件还没处理完 。
后第2次的点击事件也开始了 这怎么避免
[/Quote]
只要button_onclick()中没有处理消息循环的代码,它会一直等到do4完成的时候才会再次响应的,所以一般你不用担心重入的问题。但是给用户的感觉不友好,如果处理的时间较长就会出现用户点了按钮之后看起来没什么反应,然后他以为没点中,再次点,结果就执行了两遍。所以建议在前面把Enabled置False,在后面把Enabled置True。当然你可以继承TButton,重写Click方法,在其中加上那两句,然后你都使用你重写过的Button
fangsp
2008-10-23
打赏
举报
回复
这是最好的办法 也是最有效的办法
在做B/S的时候 为了防止重复提交
也是这么实现的
utton.enabled := false;
try
do1;
do2;
do3;
do4;
finally
button.enabled := true;
end;
Corn1
2008-10-23
打赏
举报
回复
因为你这个button始终是enable的啊,所以任何时候都能去点。
所以,在点了以后,应该让它先disable掉,然后等执行结束了再enable
Wozhiyonglangqi
2008-10-23
打赏
举报
回复
[Quote=引用 5 楼 Corn1 的回复:]
不管用哪种方法,都是要改代码的
[/Quote]是的 代码是要改的 ^_^
大侠有没相关这方面的经验 为什么一个事件还没完成他还能在触发下次的事件呢
zhouyu5241
2008-10-23
打赏
举报
回复
帮顶!
zhouyu5241
2008-10-23
打赏
举报
回复
帮顶!
Corn1
2008-10-23
打赏
举报
回复
不管用哪种方法,都是要改代码的
Wozhiyonglangqi
2008-10-23
打赏
举报
回复
[Quote=引用 2 楼 Corn1 的回复:]
button.enabled := false;
try
do1;
do2;
do3;
do4;
finally
button.enabled := true;
end;
[/Quote]同上
Wozhiyonglangqi
2008-10-23
打赏
举报
回复
[Quote=引用 1 楼 gzmhero 的回复:]
button_onclick(){
button.enabled:=false;
do1,
do2,
do3,
do4,
button.enabled:=true;
}
[/Quote]这虽然可行 但是修改量太大了 。大家是否在开发中有遇到同样的问题
Corn1
2008-10-23
打赏
举报
回复
button.enabled := false;
try
do1;
do2;
do3;
do4;
finally
button.enabled := true;
end;
加载更多回复(1)
PYQT5点击
Button
执行
多次
问题
解决方案(亲测)
PYQT5点击
Button
执行
多次
问题
,解决方案
Button>先
执行
前端js函数,再
执行
后台的事件处理
有两种使用方式: 1)是一个单纯的
Button
,没有在中,此时,要想实现
button
先
执行
js函数,再
执行
后台事件处理,此时的解决办法就是,直接上代码: 前端代码: function JsYuezhifuFunction() { if (confirm("确定支付吗?")) { window.
asp.net服务器控件
button
先
执行
js再
执行
后台的方法
关于
button
这个服务器控件,我一直想减少它向服务器提交数据。那些检测,还是在客户端实现就好了。 这就需要javascript,但是我发现仅仅有javascript还是不够的。
button
服务器控件的单击事件叫“onClick”, 所以javascript就无法使用这个事件。因为重名了。我想实现的是单击
button
的时候,先
执行
客户端的javascript代码,然后再
执行
后台事件。 如果使
html中
button
点击之后函数不
执行
原因
今天发现一个小的
问题
。 点击一个
button
怎么都不
执行
<
button
id="login" type="submit" onclick="login()">登 录</
button
> login()函数里面为了测试就只写了一个alert()语句,但是不管怎么都不
执行
。 然后试着改了一下函数名 <
button
id="login" type="submit" on...
前端多次点击
button
_C#.net解决点击
button
的重复
执行
后台代码
问题
相信大家在用C#做网站的过程种,发现点击
button
提交时,按钮没有什么变化,是因为后台正在处理数据,但是用户由于不知道,所以就一直点击
button
,导致后台重复
执行
。相信大家都想解决此
问题
。如果数据没有处理完,等到处理完毕后,才能继续点击!底部附源码下载方法一:只在按钮前台代码中增加OnClientClick="this.disabled=true;" UseSubmitBehavior="Fa...
Delphi
5,928
社区成员
262,931
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章