caicaicaicaijj 发表于 2010-4-28 17:00:44

【已解决】关于GUICtrlSetData下拉数据累加的问题?

本帖最后由 caicaicaicaijj 于 2010-4-28 23:14 编辑

如下例子:
当点击框一下拉选项里其中a项,框二的下拉列表就对应显示1234
如果我再次点击框一选b,框二里原来的数据不被清空,会累加上去
如何清除上次的选择结果,保证每次选择框一时,在框二的下拉都只显示对应的数据?

#include <GuiConstantsEx.au3>
GUICreate("",490,300)
$k1=GUICtrlCreateCombo("",30,50,100,30);框一
GUICtrlSetData($k1,"a|b","");
$k2=GUICtrlCreateCombo("",150,50,100,30);框二
GUISetState(@SW_SHOW)
While 1
        $msg = GUIGetMsg()
Select
        Case $msg = $GUI_EVENT_CLOSE
        Exit
Case $msg =$k1;点击框一时
        $r1=GUICtrlRead($k1);读框一的数据
       
        If $r1="a" Then;如果是‘a’,生成框二的下拉1、2、3、4
                gUICtrlSetData($k2,"1|2|3|4","")
                ElseIf $r1="b" Then;如果是‘b’,生成框二的下拉5、6、7、8
                gUICtrlSetData($k2,"5|6|7|8","")
        Else
                EndIf
EndSelect
WEnd

caicaicaicaijj 发表于 2010-4-28 22:49:03

想不通为什么会累积上次的数据,是不是条件句没用对?

lynfr8 发表于 2010-4-28 23:04:47

#include <GuiConstantsEx.au3>
GUICreate("",490,300)
$k1=GUICtrlCreateCombo("",30,50,100,30);框一
GUICtrlSetData($k1,"a|b","");
$k2=GUICtrlCreateCombo("",150,50,100,30);框二
GUISetState(@SW_SHOW)
While 1
      $msg = GUIGetMsg()
Select
      Case $msg = $GUI_EVENT_CLOSE
      Exit
Case $msg =$k1;点击框一时
      $r1=GUICtrlRead($k1);读框一的数据
      
      If $r1="a" Then;如果是‘a’,生成框二的下拉1、2、3、4
                        gUICtrlSetData($k2,"")
                gUICtrlSetData($k2,"1|2|3|4","")
                        ElseIf $r1="b" Then;如果是‘b’,生成框二的下拉5、6、7、8
                                gUICtrlSetData($k2,"")
                gUICtrlSetData($k2,"5|6|7|8","")
      Else
                EndIf
EndSelect
WEnd

caicaicaicaijj 发表于 2010-4-28 23:08:32

呵呵,万分感谢,首先生成空,再生成数据
我怎么就想不到呢!
页: [1]
查看完整版本: 【已解决】关于GUICtrlSetData下拉数据累加的问题?