邪恶海盗 发表于 2012-9-26 22:34:25

如何设置ListView指定列数据输出到Combox供选择??

本帖最后由 邪恶海盗 于 2012-9-26 22:36 编辑

如题,比如现在有一个ListView:
11-22|333|333|333
11-21|434|332|222
12-21|89|94|33|33

如何提取出首列数据并以"-"分开写入至Combox1和Combox2以供选择???

附带要求:当Combox1选中11时,Combox2内只出现22和21以供选择,或许可以简单一点,先只写Combox1,当Combox1选择数据之后再写Combox2...


请高淫指导...

邪恶海盗 发表于 2012-9-27 19:37:36

高淫都哪去了???

半芯竹 发表于 2012-9-27 20:35:52

回复 2# 邪恶海盗


    不是不想帮你,只是帮助里都能找到解决办法的,为什么都想着伸手就拿?

veket_linux 发表于 2012-9-27 20:43:45


#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>

#include <ComboConstants.au3>
#include <GuiListView.au3>

Global $ListView1_
Global $a
Global $b
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 449, 192, 114)
$ListView1 = GUICtrlCreateListView("1|2|3|4|5", 16, 24, 250, 200)
$ListView1_ = GUICtrlCreateListViewItem("11-22|333|333|333", $ListView1)
_GUICtrlListView_SetColumnWidth($ListView1, 0, 100)
$ListView1_ = GUICtrlCreateListViewItem("11-21|434|332|222", $ListView1)
$ListView1_ = GUICtrlCreateListViewItem("12-21|89|94|33|33", $ListView1)

$Combo1 = GUICtrlCreateCombo("", 350, 24, 100, 25, $CBS_DROPDOWNLIST)
$Combo2 = GUICtrlCreateCombo("", 480, 24, 100, 25, $CBS_DROPDOWNLIST)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Local $i
Local $j
Local $array_all_line
Local $array_head
Local $str1
Local $str2
For $i = 0 To 2
        $array_all_line = StringSplit(GUICtrlRead($ListView1_[$i]), "|")
        $array_head = StringSplit($array_all_line, "-")
        $a[$i] = $array_head
        $b[$i] = $array_head
Next

$str1 = $a
For $i = 1 To 2
        For $j = 0 To $i-1
                If $a[$i]=$a[$j] Then
                        ExitLoop
                EndIf
        Next
        If $j = $i Then $str1 &= "|" & $a[$i]
Next
GUICtrlSetData($Combo1, $str1)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Combo1
                        Local $combo_item = GUICtrlRead($Combo1)
                        GUICtrlSetData($Combo2, "")
                        $str2 = ""
                        For $i = 0 To 2
                                If $a[$i] = $combo_item Then
                                        If $str2 = "" Then
                                                $str2 &= $b[$i]
                                        Else
                                                $str2 &="|" & $b[$i]
                                        EndIf
                                EndIf
                        Next
                        GUICtrlSetData($Combo2, $str2)
        EndSwitch
WEnd

veket_linux 发表于 2012-9-27 20:50:14

效果图

邪恶海盗 发表于 2012-9-27 21:01:15

回复 3# 半芯竹


    还真不知道哪有,没找到...

邪恶海盗 发表于 2012-9-27 21:06:17

回复 5# veket_linux


    3Q,没天试试...

邪恶海盗 发表于 2012-9-28 12:25:00

回复 5# veket_linux


    如果ListView数据是从数据库读取后显示出来的,要怎么整???

邪恶海盗 发表于 2012-9-28 20:52:25

For $six =0 To XXX
                GUICtrlSetData($combo23,_GUICtrlListView_GetItemText($list3, $six,0))
Next

这样就可以输出首列数据了,不过XXX的数量,也就是ListView第一列数据的总行数怎么确定???

邪恶海盗 发表于 2012-9-28 21:03:06

本帖最后由 邪恶海盗 于 2012-9-28 21:07 编辑

用_GUICtrlListView_GetItemCount($List3)-2搞定了,但不知道原理...

                GUICtrlSetData($combo23,StringLeft(_GUICtrlListView_GetItemText($list3, $six),3))
用于提取首列数据前三个字符至Combo23,然后另外一个怎么识别不会了...

邪恶海盗 发表于 2012-9-30 13:00:00

For $six =0 To _GUICtrlListView_GetItemCount($List3)-1;获取有数据的行数
        $cci=StringSplit(_GUICtrlListView_GetItemText($list3, $six),"-");提取每行首列数据并分拆字符
                GUICtrlSetData($combo23,$cci);将获取到的数据写入combo24
Next

Case $combo23

        $iI = _GUICtrlListView_FindInText($list3, GUICtrlRead($combo23));搜索combo23所在行
        $mpbz=StringSplit (_GUICtrlListView_GetItemText($list3,$iI),"-");提取指定行首列数据并分拆字符
GUICtrlSetData($combo24,$mpbz);输出获取到的数据到combo24

Combo23数据获取正常,
当Combo23选择后,Combo24只显示一个标记,其它不显示,
Combo23再次选择时,Combo24将添加一个标记,原标记还在下拉菜单内,不符合我要求的效果,求高手指导...

邪恶海盗 发表于 2012-10-4 10:00:41

高淫们国庆都把妹去了么???

auhj887 发表于 2012-10-4 10:03:50

学习,学习。。。。。。。。。{:face (280):}

881966 发表于 2012-10-4 10:36:09

学习学习{:face (310):}

netegg 发表于 2012-10-6 17:27:23

_GUICtrlListView_GetItemTextArray
更好点吧,可以指定列索引,不用拆
页: [1] 2 3
查看完整版本: 如何设置ListView指定列数据输出到Combox供选择??