找回密码
 加入
搜索
查看: 5723|回复: 8

[AU3基础] GUICtrlCreateButton 重复点击会执行两次,有更好的办法防止吗??

  [复制链接]
发表于 2014-6-27 15:33:57 | 显示全部楼层 |阅读模式
GUICtrlCreateButton 重复点击会执行两次,有更好的办法防止重复点击执行两次的办法吗??

GUI 接口操作的时候  通常 一个 BUTTON 按钮 只会希望执行一次,之前看范例用的方法 是 按钮一执行就会把整个 GUI 接口 LOCK 住 等执行完毕了才解开,但是 实际上操作的时候 其实有点不顺,有更好的防止办法吗??

举例  下面的 程序  当你 连续 在按钮上 按三下 就会依序跳出 三个 msgBOX   有办法改成  不管怎么按 都只会跳出一个  吗??


#include <GUIConstantsEx.au3>

Example()

;-------------------------------------------------------------------------------------
; Example - Press the button to see the value of the radio boxes
; The script also detects state changes (closed/minimized/timeouts, etc).
Func Example()
        Local $button_1
                
        Opt("GUICoordMode", 1)
        $WinMain=GUICreate("Radio Box Demo", 400, 280)

        ; Create the controls
        $button_1 = GUICtrlCreateButton("B&utton 1", 30, 20, 120, 40)
        


        ; Show the GUI
        GUISetState()


        While 1
                Switch GUIGetMsg()
                                        

                        Case $GUI_EVENT_CLOSE
                                Exit


                        Case  $button_1 
                                MsgBox(4096, "Default button clicked", "Radio " )



                                EndSwitch
                        sleep(100)
        WEnd

EndFunc   ;==>Example
发表于 2014-6-27 16:20:13 | 显示全部楼层
先禁用按钮,完成后再解禁
 楼主| 发表于 2014-6-27 16:31:11 | 显示全部楼层
回复 2# afan
剛剛測試了一下 這樣對連擊  沒用的
不過這倒是 好像比 禁用 整個 GUI 來的方便
感謝 點子

不過 連擊的方式 有辦法 防止嗎??
发表于 2014-6-27 16:59:30 | 显示全部楼层
回复 3# kk_lee69


    连击再快也快不过代码吧…
GUICreate('')
$button_1 = GUICtrlCreateButton("B&utton 1", 30, 20, 120, 40)
GUISetState()
While 1
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $button_1
                        GUICtrlSetState($button_1, 128)
                        MsgBox(0, '', '')
                        GUICtrlSetState($button_1, 64)
        EndSwitch
WEnd
 楼主| 发表于 2014-6-27 17:46:02 | 显示全部楼层
回复 4# afan
測試出來了

SLEEP 會影響反應的判斷  感謝提供 好方法
发表于 2014-6-27 17:57:30 | 显示全部楼层
可以用一个全局变量,进入时设置为true,退出后设置为false,执行程序时先判断,如果是true就退出,这样就不会多次执行了
 楼主| 发表于 2014-7-2 16:06:53 | 显示全部楼层
回复 6# kevinch
這也是個辦法   感謝提供點子
发表于 2014-7-3 10:21:07 | 显示全部楼层
2#AFAN说的方法是我一直在用的方法,在有第一次触发后就禁用这个按钮,只到这个操作结束
发表于 2014-7-4 09:34:55 | 显示全部楼层
学习。。。。。。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 20:45 , Processed in 0.075317 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表