#include <ListBoxConstants.au3>
#include <GUIConstantsEx.au3>

Local $Message = "Следующие кнопки были нажаты"
Local $hGUI, $add, $clear, $mylist, $msg, $index, $read, $setsel, $count, $select, $find_string, $del_item, $insert, $color, $tmp

$hGUI = GUICreate("GUI с элементом списка - List") ; Создаёт окно в центре экрана

$read = GUICtrlCreateButton("Текст пункта", 40, 30, 121, 25)
$index = GUICtrlCreateButton("Индекс выделенного", 40, 60, 121, 25)
$setsel = GUICtrlCreateButton("Выделить пункт 4", 40, 90, 121, 25)
$select = GUICtrlCreateButton("Выделить ""Пункт1""", 40, 120, 121, 25)
$find_string = GUICtrlCreateButton("Найти строку Пункт 3", 40, 150, 121, 25)
$del_item = GUICtrlCreateButton("Удалить строку 3", 40, 180, 121, 25)
$count = GUICtrlCreateButton("Количество пунктов", 40, 210, 121, 25)
$add = GUICtrlCreateButton("Добавить пункт", 40, 240, 121, 25)
$insert = GUICtrlCreateButton("Вставить в позицию", 40, 270, 121, 25)
$color = GUICtrlCreateButton("Изменить цвет", 40, 300, 121, 25)
$clear = GUICtrlCreateButton("Очистить список", 40, 330, 121, 25)

$mylist = GUICtrlCreateList("Отсчёт пунктов с 0", 180, 30, 190, 100, $GUI_SS_DEFAULT_LIST + $LBS_NOINTEGRALHEIGHT)
; стиль LBS_NOINTEGRALHEIGHT предотвращает изменение высоты кратно высоте пункта
; чтобы отключить сортировку в списке используйте стиль $WS_BORDER+$WS_VSCROLL+$LBS_NOINTEGRALHEIGHT
GUICtrlSetLimit(-1, 200) ; ограничить прокрутку по горизонтали
GUICtrlSetData(-1, $Message)
GUICtrlSetData(-1, 'Пункт 1|Пункт 2|Пункт 3|Текст', 'Пункт 2')
; $close = GUICtrlCreateButton("моя кнопка выхода", 180, 140, 190, 25)

GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		; Case $close
			; MsgBox(4096, "", "Нажата кнопка закрытия", 2)
			; Exit
		Case $add
			GUICtrlSetData($mylist, "Нажата кнопка ""Добавить""|")
		Case $clear
			GUICtrlSetData($mylist, "")
		Case $index
			$tmp = GUICtrlSendMsg($mylist, $LB_GETCURSEL, 0, 0)
			MsgBox(4096, 'Текст выделенного пункта', $tmp, 0, $hGUI)
		Case $read
			$tmp = GUICtrlRead($mylist)
			MsgBox(4096, 'Текст выделенного пункта в списке', $tmp, 0, $hGUI)
		Case $setsel
			GUICtrlSendMsg($mylist, $LB_SETCURSEL, 4, 0)
		Case $count
			$tmp = GUICtrlSendMsg($mylist, $LB_GETCOUNT, 0, 0)
			MsgBox(4096, 'Количество пунктов в списке', $tmp, 0, $hGUI)
		Case $select
			GUICtrlSendMsg($mylist, $LB_SELECTSTRING, 0, 'Пункт 1')
		Case $find_string
			$tmp = GUICtrlSendMsg($mylist, $LB_FINDSTRINGEXACT, 0, 'Пункт 3')
			MsgBox(4096, 'Найдена точная строка в списке - Пункт 3', 'Индекс = ' & $tmp, 0, $hGUI)
		Case $del_item
			$tmp = GUICtrlSendMsg($mylist, $LB_DELETESTRING, 3, 0)
		Case $insert
			GUICtrlSendMsg($mylist, $LB_INSERTSTRING, 3, 'Вставлен в позицию 3')
		Case $color
			GUICtrlSetBkColor($mylist, 0xCCCC99)
	EndSwitch
WEnd