风行者 发表于 2010-8-19 17:18:10

[已解决]listbox去除重复和排序问题

本帖最后由 风行者 于 2010-8-19 20:02 编辑

1.怎样去掉重复的项只保留一个?
2.如何打乱排列顺序?#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("test", 253, 315, 251, 122)
$List1 = GUICtrlCreateList("", 8, 0, 241, 305)
GUICtrlSetData(-1,"a|b|c|d|e|f|b|c|e")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

3mile 发表于 2010-8-19 17:59:01

第一个问题,笨办法解决#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <GuiListBox.au3>
#include <array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("test", 253, 315, 251, 122)
$Button=GUICtrlCreateButton("清理",100,280)
$List1 = GUICtrlCreateList("", 8, 0, 241, 250)
GUICtrlSetData(-1,"a|b|c|d|e|f|b|c|e")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                                Case $Button
                                        $number=_GUICtrlListBox_GetCount($List1)
                                        Dim $Array[$number]
                                        For $i=0 To $number-1
                                                $Array[$i]=_GUICtrlListBox_GetText($List1,$i)
                                        Next
                                        $reusl=_ArrayUnique($Array)
                                        _GUICtrlListBox_ResetContent($List1)
                                        $str=_ArrayToString($reusl,"|",1)                                       
                                        GUICtrlSetData($List1,$str)
                                       
      EndSwitch
WEnd

afan 发表于 2010-8-19 18:03:52

本帖最后由 afan 于 2010-8-19 18:08 编辑

用数组比较简单
_ArrayUnique() 即可

试试 _ArraySwap() 循环打乱

afan 发表于 2010-8-19 18:24:25

#include <Array.au3>

Local $avArray = ['a', 'b', 'c', 'd', 'e', 'f', 'b', 'c', 'e']
_ArrayDisplay($avArray, '原始')
$avArray = _ArrayUnique($avArray)
_ArrayDelete($avArray, 0)
_ArrayDisplay($avArray, '清理重复')
For $i = 1 to 15
        _ArraySwap($avArray, $avArray)
Next
_ArrayDisplay($avArray, '乱序')

风行者 发表于 2010-8-19 20:02:24

谢谢两位的帮忙

binshiwo 发表于 2011-2-18 17:46:44

正是我想要的。占位留看

pingfan5888 发表于 2012-11-5 20:06:48

这个不错啊。

zxxputian2 发表于 2018-6-11 19:21:49

谢谢楼主提供
页: [1]
查看完整版本: [已解决]listbox去除重复和排序问题