Что нового

Как в List управлять прокруткой?

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Добрый день.
Не нашел через поиск ответа, вопрос вроде элементарный..
Пробовал разными способами - не получается, что то не учитываю. Помогите разобраться.

Создается лог в этом окне List.
Код:
$ReportList = GUICtrlCreateList("", 0, 184, 441, 110,BitOR($WS_BORDER, $WS_VSCROLL, $WS_HSCROLL))


Функция для добавки данных беру из UDF по ListBox-
Код:
Func _Report($ListBox,$sString)
	_GUICtrlListBox_InsertString($ListBox,_DTNow()&$sString,-1)
	Local $iCaretIndex = _GUICtrlListBox_GetCount($ListBox)
	ConsoleWrite($iCaretIndex&@CRLF)
	_GUICtrlListBox_SetCaretIndex ($ListBox,$iCaretIndex,False)
EndFunc


_GUICtrlListBox_SetCaretIndex ($ListBox,$iCaretIndex,False) - последняя моя попытка прокрути слайдер вниз..
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ViktorSPB,
Немного переделанный пример из справки, у меня работает.
Код:
#include <GUIListBox.au3>
#include <GuiConstantsEx.au3>

Opt('MustDeclareVars', 1)

_Main()

Func _Main()
	Local $iIndex, $hListBox

	GUICreate('Test', 400, 296)
	$hListBox = GUICtrlCreateList('', 2, 2, 396, 296)
	GUISetState()
	_GUICtrlListBox_BeginUpdate($hListBox)
	For $i = 1 To 500
		_GUICtrlListBox_AddString($hListBox, StringFormat('%03d %03d : Random string', $i, Random(1, 100, 1)))
	Next
	_GUICtrlListBox_EndUpdate($hListBox)
	_GUICtrlListBox_SetCurSel($hListBox, Random(0, 20, 1))
	Sleep(2000)
	$iIndex = _GUICtrlListBox_GetCount($hListBox)
	_GUICtrlListBox_SetCurSel($hListBox, -1)
	_GUICtrlListBox_SetCaretIndex($hListBox, $iIndex - 1)
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>_Main
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
madmasles, здравствуйте!
Ваш пример натолкнул на решение.
Проблема была в том, что $iCaretIndex в моем решении счетается с 1, а индекс для _GUICtrlListBox_SetCaretInde начинает расчет с 0. И если в эту функцию внести значение большее, чем есть в List, то позиция устанавливается в начало данных.
Поменял на ($iCaretIndex - 1) все заработало.
Спасибо!
Скажите, а в чем разница между List и ListBox? Что лучше использовать для ведения логов?
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Yashied,
На следующей программе попробую LastView.
Мне показалось, что ведение логов в формате таблицы не очень удобно, в дальнейшем нужно будет в файл отправлять обрабатывая каждую строку.
Но, может быть, функций для LastView и больше, и, в итоге, пользоваться ею окажется удобнее.
 
Верх