zlmyongheng 发表于 2011-10-11 21:29:56

为何禁用复选框,还是对其进行更改操作,并调用相应代码,有源码

#include <GUIConstantsEx.au3>

Opt('MustDeclareVars', 1)
Dim $wr
Example()

Func Example()
        Local $checkCN, $msg
        GUICreate("My GUI Checkbox"); will create a dialog box that when displayed is centered

        $checkCN = GUICtrlCreateCheckbox("CHECKBOX 1", 10, 10, 120, 20)
$wr=GUICtrlCreateCheckbox("CHECKBOX 1", 20, 20, 120, 20)
        GUISetState()       ; will display andialog box with 1 checkbox
;GUICtrlSetState($wr,$GUI_INDETERMINATE)

GUICtrlSetState($checkCN,$GUI_DISABLE)
GUICtrlSetState($wr,$GUI_DISABLE)
GUICtrlSetState($wr,$GUI_INDETERMINATE)
GUICtrlSetState($wr,$GUI_CHECKED)
If GUICtrlRead($wr)=$GUI_CHECKED Then MsgBox(0,"debug","禁用无效!")
        ; Run the GUI until the dialog is closed
        While 1
                $msg = GUIGetMsg()
               
                If $msg = $GUI_EVENT_CLOSE Then ExitLoop
        WEnd
EndFunc   ;==>Example

zcx880517 发表于 2011-10-12 00:05:03

什么意思。。

zlmyongheng 发表于 2011-10-14 14:15:10

If GUICtrlRead($wr)=$GUI_CHECKED Then MsgBox(0,"debug","禁用无效!")
为什么这句仍然能够执行,
前面以前把复选框变成灰色的了,还能执行,选 中后的操作,那不是没禁用吗

zlmyongheng 发表于 2011-10-16 20:57:01

等待高手出现为什么变成灰色的禁用命令,会失效,仍然可以执行它的代码

zlmyongheng 发表于 2011-10-17 19:37:33

还是没能解决,真不知道是怎么回事,禁用的复选框,还是执行代码

netegg 发表于 2011-10-17 19:56:35

本帖最后由 netegg 于 2011-10-17 19:58 编辑

回复 5# zlmyongheng
判断前一句你不是设置为选中了吗
GUICtrlSetState($wr,$GUI_CHECKED)'
disable是指不响应点击操作,谁说不能通过代码更改了?

zlmyongheng 发表于 2011-10-20 17:53:03

本帖最后由 zlmyongheng 于 2011-10-20 18:14 编辑

怎么禁用的复选框,再加上选 中的代码为什么测试它的值仍然为1,这种状态不利于执行后面的代码,因为在后面是根据它的值来判断执行代码的,如果禁用并选中值一样,感觉禁用的效果不是太好,有没有用户定义函数可以达到禁用后有一个特殊的值

afan 发表于 2011-10-20 18:49:05

回复 7# zlmyongheng GUICreate('')
$n = GUICtrlCreateCheckbox("checkbox 测试", 10, 10)
GUICtrlSetState(-1, 128 + 1)
GUISetState()
MsgBox(0, '状态', StringFormat("GUICtrlRead=%d\nGUICtrlGetState=%d", GUICtrlRead($n), GUICtrlGetState($n)))
GUICtrlSetState($n, 64 + 4)
MsgBox(0, '状态', StringFormat("GUICtrlRead=%d\nGUICtrlGetState=%d", GUICtrlRead($n), GUICtrlGetState($n)))
While 1
        $msg = GUIGetMsg()
        If $msg = -3 Then ExitLoop
WEnd
页: [1]
查看完整版本: 为何禁用复选框,还是对其进行更改操作,并调用相应代码,有源码