alex33
Скриптер
- Сообщения
- 1,457
- Репутация
- 186
Вот заметил такую ошибку, если в список созданный через GUICtrlCreateList добавить два или более одинаковых элемента показываться будет только один, из-за этого сбивается счётчик индексов и нарушается логика...
Наглядный пример:
Как это можно исправить?
Наглядный пример:
Код:
#include <Array.au3> ; for _ArrayDisplay
#include <GUIConstants.au3>
#include <ListBoxConstants.au3>
#include <GUIListBox.au3>
$title = @ScriptName
$gui = GUICreate($title, 500, 300, 60, 60)
$label1 = GUICtrlCreateLabel("test list", 10, 10, 100, 30)
$list1 = GUICtrlCreateList("", 10, 50, 200, 130)
$aListData = StringSplit("A|B|C|D|D|E|F|F|F|F|G|H", "|", 2)
;_ArrayDisplay($aListData, "Data preview")
For $i = 0 To UBound($aListData) - 1
ConsoleWrite('$aListData[' & $i & '] = "' & $aListData[$i] & '"' & @CRLF)
GUICtrlSetData($list1, $aListData[$i])
Next
$label2 = GUICtrlCreateLabel("", 10, 210, 270, 80)
GUISetState(@SW_SHOW, $gui)
$timer1 = TimerInit()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $list1
$iIndex = _GUICtrlListBox_GetCurSel($list1)
$sItem = $aListData[$iIndex]
$sMsgText = "index: " & $iIndex & @CRLF & "item: " & $sItem
ConsoleWrite("=====Selected list1=====" & @CRLF & $sMsgText & @CRLF)
GUICtrlSetData($label2, $sMsgText)
$timer1 = TimerInit()
;MsgBox(0, "list1 selected", $sMsgText, 30, $gui)
EndSwitch
If Floor(TimerDiff($timer1)) >= 10000 Then GUICtrlSetData($label2, "")
WEnd
GUIDelete($gui)