社区
Delphi
帖子详情
button 的执行问题
Wozhiyonglangqi
2008-10-23 02:06:55
当我在极快的时候点击2下 btutton的执行情况 如下
button_onclick(){
do1,
do2,
do3,
do4,
}
当点击第一下的时候 代码开始执行到do2,这时事件还没处理完 。
后第2次的点击事件也开始了 这怎么避免
...全文
128
21
打赏
收藏
button 的执行问题
当我在极快的时候点击2下 btutton的执行情况 如下 button_onclick(){ do1, do2, do3, do4, } 当点击第一下的时候 代码开始执行到do2,这时事件还没处理完 。 后第2次的点击事件也开始了 这怎么避免
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
asp.net服务器控件
button
先
执行
js再
执行
后台的方法
服务器控件增强了在后台处理的能力,但是在前台有时候也被受到了限制。 关于
button
这个服务器控件,我一直想减少它向服务器提交数据。那些检测,还是在客户端实现就好了。...我想实现的是单击
button
的时候,先
执行
客
elementUI 「el-
button
」
执行
不同的函数
Vue模板开发过程中,经常出现 创建 和 编辑使用同一个模板,在需要提交的时候,
button
需要
执行
不同的函数,这时,可以在
button
上使用三目表达式。 // editFlag 为父组件传递过来的值,应为 布尔类型 ,当 editFlag ...
C# 第一次按下
button
执行
一件事情,第二次按下
button
执行
另一件事情
那么第三次按下时呢,
执行
哪个事件? private void
button
1_Click(object sender, System.EventArgs e) { int clickTimes; //按下du次数 //获取按zhi下次数 object tag = this.
button
1.Tag; if (tag == null) { ...
Button>先
执行
前端js函数,再
执行
后台的事件处理
1)是一个单纯的
Button
,没有在中,此时,要想实现
button
先
执行
js函数,再
执行
后台事件处理,此时的解决办法就是,直接上代码: 前端代码: function JsYuezhifuFunction() { if (confirm("确定...
salesforce中自定义
button
执行
js调用后台apex代码
在项目中往往有这样的需求,在一个记录的详细页面有一个自定义的
button
,点击之后只想根据该记录的一些值来
执行
一些特定的apex代码,并将
执行
结果反馈给用户,则在自定义
button
中写js代码,调用后台apex类方法,即可...
Delphi
5,388
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章