Что нового

Как добавлять и удалять элементы в текущую позицию List

vaf

Новичок
Сообщения
186
Репутация
2
Всем привет. Возникла следующая задача.
Необходимо добавлять элементы в список GUICtrlCreateList, но добавлять не просто чтобы добавлялись в конец списка, а так что если курсор стоит на каком нибудь элементе, то добавление было перед этим элементом, точно так же и удаление, не просто удалять последнее значение из списка, а то на котором стоит курсор. И подскажите пожалуйста, как вывести весть список значений GUICtrlCreateList
Вот что у меня пока получилось, если подкорректируете под выше описанную задачу, буду очень рад.
Заранее огромное спасибо.

Код:
#include <ListBoxConstants.au3>
#include <GUIConstantsEx.au3>

; Create a GUI
#include <GUIConstantsEx.au3>

Opt("GUICoordMode", 2)

$hGUI = GUICreate("Настройка", 500, 500)

; Create the combo
$hCombo = GUICtrlCreateCombo("", 10, 10, 200, 20)
$BtnIns = GUICtrlCreateButton("Добавить", 10, -18, 70)
$BtnDel = GUICtrlCreateButton("Удалить", 10, -20, 70)
$BtnOk = GUICtrlCreateButton("Ok", 10, -20, 50)
$mylist = GUICtrlCreateList("", -420, 10, 420, 100, $GUI_SS_DEFAULT_LIST + $LBS_NOINTEGRALHEIGHT)

GUICtrlSetLimit(-1, 200) ; ограничить прокрутку по горизонтали

GUICtrlSetData($hCombo, '|Авто|Автоспорт|Армия и оружие|Баскетбол|В мире|Важное за сутки|Гаджеты|Главное|Единоборства|ЖКХ|Здоровье|Игры|Интернет|Кино|Космос|Культура|Лесные пожары|Музыка|Наука|Недвижимость|Общество|Погода|Политика|Происшествия|Путешествия|Рекомендуем почитать|Религия|Спорт|Театры|Теннис|Технологии|Транспорт|Финансы|Футбол|Хоккей|Шоу-бизнес|Экология|Экономика|Энергетика|')

GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
		 Case $hCombo
		 ;Case $BtnIns
		;	MsgBox(4096, 'Тест', GUICtrlRead($hCombo) , 0, $hGUI)
		 Case $BtnIns
            GUICtrlSetData($mylist, GUICtrlRead($hCombo) & "|")
		 Case $BtnDel
			$tmp = GUICtrlSendMsg($mylist, $LB_DELETESTRING, 3, 0)
		 Case $BtnOk
    EndSwitch
WEnd
 
Автор
V

vaf

Новичок
Сообщения
186
Репутация
2
С сортировкой и удалением текущей позиции разобрался, осталось самое сложное - как добавить значение в GUICtrlCreateList не в конец списка, а в позицию курсора
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Для расширенной работы со списком см. UDF GuiListBox.au3
Конкретно см. примеры по следующим функциям
Код:
_GUICtrlListBox_InsertString()
_GUICtrlListBox_GetCurSel()
_GUICtrlListBox_DeleteString()
А для вывода всех значений нужно узнать количество строк через
Код:
_GUICtrlListBox_GetCount()
и в цикле получать их текст через
Код:
_GUICtrlListBox_GetText()



Добавлено:
Сообщение автоматически объединено:

Для преобразования ControlID в hWnd используйте
Код:
GUICtrlGetHandle()
 
Автор
V

vaf

Новичок
Сообщения
186
Репутация
2
InnI сказал(а):
Для расширенной работы со списком см. UDF GuiListBox.au3
Конкретно см. примеры по следующим функциям
Код:
_GUICtrlListBox_InsertString()
_GUICtrlListBox_GetCurSel()
_GUICtrlListBox_DeleteString()
А для вывода всех значений нужно узнать количество строк через
Код:
_GUICtrlListBox_GetCount()
и в цикле получать их текст через
Код:
_GUICtrlListBox_GetText()



Добавлено:
Сообщение автоматически объединено:

Для преобразования ControlID в hWnd используйте
Код:
GUICtrlGetHandle()




ура, спасибо за _GUICtrlListBox_GetText(), не знал. задача решена
 
Верх