cfs43210 发表于 2012-9-22 17:06:20

循环读取INI改变控件状态问题!(已解决)

本帖最后由 cfs43210 于 2012-9-23 23:41 编辑



现在问题是第一次读取是可以的,但是$Checkbox8 和 $Checkbox23就头和尾复选按钮控制的$Combo1、$Combo1、$Input14、$Input29 失灵。第二次读取时其它控件也会被禁用了,这是这么回事!谢谢!

                   For $i = 1 To 15
                       
                        $aa = IniRead($Tini, "abc", "x1" & $i, "default")
                       
                        If $aa = 1 Then
                               
                                GUICtrlSetState($Checkbox8, $GUI_CHECKED)
                                GUICtrlSetState($Combo1, $GUI_ENABLE)
                                GUICtrlSetState($Input14, $GUI_ENABLE)
                                $Checkbox8 = $Checkbox8 + 1
                                $Combo1 = $Combo1 + 1
                                $Input14 = $Input14 + 1
                               
                        ElseIf $aa = 0 Then
                               
                                GUICtrlSetState($Checkbox8, $GUI_UNCHECKED)
                                GUICtrlSetState($Combo1, $GUI_DISABLE)
                                GUICtrlSetState($Input14, $GUI_DISABLE)
                                $Checkbox8 = $Checkbox8 + 1
                                $Combo1 = $Combo1 + 1
                                $Input14 = $Input14 + 1
                               
                        EndIf
                Next

cfs43210 发表于 2012-9-22 18:12:13

大侠帮忙看看!顶一顶!

cfs43210 发表于 2012-9-22 19:25:02

hurry hurry hurry hurry

cfs43210 发表于 2012-9-22 19:25:46

知道的人进来!!,谢谢

cfs43210 发表于 2012-9-22 20:47:31

期待高手出现~~~

cfs43210 发表于 2012-9-23 20:53:40

等待了一个晚上,没人回复。再顶上去。谢谢!

xms77 发表于 2012-9-23 22:10:58

回复 1# cfs43210
$Checkbox8 = $Checkbox8 + 1
$Combo1 = $Combo1 + 1
$Input14 = $Input14 + 1
什么意思是?这些变量应该都是控件变量,能够加减运算吗?

cfs43210 发表于 2012-9-23 23:10:59

是控件变量,运行时是能加,当循环一次就是下一个控件。

cfs43210 发表于 2012-9-23 23:38:27


有高人指点,变了一下方法。OK,谢谢7楼!!
                        $che = 8
                        $com = 1
                        $inp = 14
                       
                        If $path = 1 Then
                               
                                GUICtrlSetState("$Checkbox" & $che, $GUI_CHECKED)
                                GUICtrlSetState("$Combo" & $com, $GUI_ENABLE)
                                GUICtrlSetState("$Input" & $inp, $GUI_ENABLE)
                                $che = $che + 1
                                $com = $com + 1
                                $inp = $inp + 1

cfs43210 发表于 2012-9-23 23:38:33

本帖最后由 cfs43210 于 2012-9-23 23:46 编辑


有高人指点,变了一下方法。OK,谢谢7楼!!(回想了一下自己很底Q,哎~~)
                        $che = 8
                        $com = 1
                        $inp = 14
                       
                        If $path = 1 Then
                               
                                GUICtrlSetState("$Checkbox" & $che, $GUI_CHECKED)
                                GUICtrlSetState("$Combo" & $com, $GUI_ENABLE)
                                GUICtrlSetState("$Input" & $inp, $GUI_ENABLE)
                                $che = $che + 1
                                $com = $com + 1
                                $inp = $inp + 1

cfs43210 发表于 2012-9-24 00:31:03

不好意思以为运算OK了。问题解决了。没想到还是不行。现在修改不回了。

annybaby 发表于 2012-9-24 00:41:37

回复 11# cfs43210


    楼主看来是个高手啊?使用控件ID直接运算,发前人所未发~~厉害厉害~~真希望你能理解它的意义~~

cfs43210 发表于 2012-9-24 01:56:07

本帖最后由 cfs43210 于 2012-9-24 01:57 编辑


搞了一个晚上终于搞清楚了,这回真搞定了。      
                     $che = 37;$Checkbox8ID
                $com = 54 ;$Combo1ID
                $inp = 20;$Input14ID
               
                For $i = 1 To 15
                       
                        $path = IniRead($Tini, "ABC", "X1" & $i, "default")
                       
                        If $path = 1 Then
                               
                                GUICtrlSetState($che, $GUI_CHECKED);之前用这样"$Checkbox" & $che程序不工作
                                GUICtrlSetState($com, $GUI_ENABLE)
                                GUICtrlSetState($inp, $GUI_ENABLE)
                                $che = $che + 1
                                $com = $com + 1
                                $inp = $inp + 1
                               
                        ElseIf $path = 0 Then
                               
                                GUICtrlSetState($che, $GUI_UNCHECKED)
                                GUICtrlSetState($com, $GUI_DISABLE)
                                GUICtrlSetState($inp, $GUI_DISABLE)
                                $che = $che + 1
                                $com = $com + 1
                                $inp = $inp + 1
                               
                        EndIf
                Nex

cfs43210 发表于 2012-9-24 02:13:50

12楼,原来控件ID是可以直接运算。之前用下面也是可以运算,只是每刷新不会重运算,而是接着ID循环运算。所以就有其它控件被禁用了的原因。总之都要感谢大家帮忙。
$Checkbox8 = $Checkbox8 + 1
$Combo1 = $Combo1 + 1
$Input14 = $Input14 + 1

macanchen 发表于 2012-10-8 16:41:50

不错,顶下
页: [1]
查看完整版本: 循环读取INI改变控件状态问题!(已解决)