[已解决]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 第一个问题,笨办法解决#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:08 编辑
用数组比较简单
_ArrayUnique() 即可
试试 _ArraySwap() 循环打乱 #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, '乱序') 谢谢两位的帮忙 正是我想要的。占位留看 这个不错啊。 谢谢楼主提供
页:
[1]