社区
Delphi
帖子详情
button 的执行问题
Wozhiyonglangqi
2008-10-23 02:06:55
当我在极快的时候点击2下 btutton的执行情况 如下
button_onclick(){
do1,
do2,
do3,
do4,
}
当点击第一下的时候 代码开始执行到do2,这时事件还没处理完 。
后第2次的点击事件也开始了 这怎么避免
...全文
167
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
时,总是
执行
pageload事件,然后再
执行
button
的点击事件
原因:
button
按钮放在了form中,form提交总是默认点击按钮提交,因此点击
button
时,系统自动提交了form表单调用pageload事件。 因此大部分pageload的代码都是写在not ispostback中。
Tkinter在使用
Button
函数时,未点击按钮command函数自动
执行
的
问题
在使用Tkinter进行页面设计时,用到
Button
函数,我们想要通过点击按钮产生一个事件,但是却遇到了还没点击按钮,但系统却
执行
了command链接的事件函数。
解决
Button
设置disabled后无法
执行
后台代码
问题
一、开始调式下面的程序,发现
Button
在js中设置disabled后无法
执行
后台代码(btnsave_Click)
问题
<asp:
Button
ID="btnsave" runat="server" Text="确 定" OnClick="btnsave_Click" OnClientClick="this.disabled = true;alert('提示');" /> ...
Tkinter中
button
按钮未按却主动
执行
command函数
问题
当我们使用python中的Tkinter进行界面开发时,经常要给
Button
控件的 OnClientClick 和 OnClick 事件
执行
顺序
问题
From:http://hi.baidu.com/ashen331/blog/item/e6d844176a05af4220a4e930.html OnClick是
button
的服务器端事件 OnClientClick是
button
的客户端事件 一般我们用 OnClientClick验证我们的提交数据,但是这个一定要返回ture或者false,即一定要加上r
Delphi
5,944
社区成员
262,941
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章