Redline
AutoIT Гуру
- Сообщения
- 506
- Репутация
- 375
Код:
#include <ListviewConstants.au3>
#include <GuiListView.au3>
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
$hGUI3 = GUICreate('Отчёт', 300, 200)
$list = GUICtrlCreateListView('#|1|2|3', 0, 0, 300, 150, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT), _
BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
For $i = 0 To 7
GUICtrlCreateListViewItem($i&'|'&Random(0, 9, 1)&'|'&Random(0, 9, 1)&'|'&Random(0, 9, 1), $list)
Next
$copy = GUICtrlCreateButton('Считать выделенные строки', 20, 160, 250, 30)
GUICtrlSetOnEvent($copy, '_copy')
GUISetState()
GUISetOnEvent($GUI_EVENT_CLOSE, '_exit', $hGUI3)
$clip = ''
While 1
Sleep(25)
WEnd
Func _copy()
;~ ConsoleWrite(@CRLF&'четвертая строка: '&_GUICtrlListView_GetItemTextString($list, 4)&@CRLF)
$sel = _GUICtrlListView_GetSelectedIndices($list, False)
ConsoleWrite(@CRLF&'--SELCTED--: '&$sel&@CRLF)
$selstring = StringSplit($sel, '|', 1)
For $i = 1 To UBound($selstring) - 1
ConsoleWrite(@CRLF&'----ROW----'&$selstring[$i]&@CRLF)
$clip &= _GUICtrlListView_GetItemTextString($list, $selstring[$i]) & '|'
Next
ConsoleWrite(@CRLF&'--clip--: '&$clip&@CRLF)
$clip = ''
EndFunc
Func _exit()
Exit
EndFunc
После нажатия кнопки - должно происходить копирование всех выделенных строк, но _GUICtrlListView_GetItemTextString($list, $selstring[$i]) возвращает пустые значения с разделителями :-\.
После долгого ковыряния нашел значение, при котором все нормально работает:
_GUICtrlListView_GetItemTextString($list, $selstring[$i] + 0)
Пока писал нашел причину - $selstring[$i] имеет тип String и все решается простым переводом строки в цифру
Код:
$selstring[$i] = Number($selstring[$i])
Вдруг кому пригодится. 8)