Что нового

[Элементы GUI] Как изменить элемент в List с определённым индексом?

dimusikus

Новичок
Сообщения
7
Репутация
0
Подскажите, у меня есть заполненный строками элемент List, мне необходимо изменить там определённый элемент с определённым индексом.
элемент создан так:
Код:
$List = GUICtrlCreateList("", 16, 80, 233, 136)


наполняется таким образом:
Код:
GUICtrlSetData($ListObjects, "новый текст|")


Команды
Код:
_GUICtrlListBox_SetItemData($List,индекс,"новая строка");
_GUICtrlListView_SetItemText($List,индекс, "новая строка")

эффекта недают.

Команда
Код:
GUICtrlSetData($List, "новый текст")

меняет весь список строк на новый Текст, а мне нужно изменить только тот что под определённым индексом идёт.
 

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
dimusikus
Скачай справку, посмотри пример для GUICtrlCreateList, там всё есть и вставка и удаление и поиск. ListView - это другое.
 
Автор
D

dimusikus

Новичок
Сообщения
7
Репутация
0
Если я правильно понял всю реализацию, то нет такой функции у List как изменить
Код:
_SetItemText

И выходом из подобной ситуации придётся реализовывать в два этапа:

1. удалить элемент с определённым индексом
Код:
GUICtrlSendMsg($List, $LB_DELETESTRING, индекс элемента, 0)

2. вставить на его место новую строку
Код:
GUICtrlSendMsg($List, $LB_INSERTSTRING, индекс элемента, 'новая строка')
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
dimusikus

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
(подробнее), а обычный код соответственно в тег [code]
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Автор
D

dimusikus

Новичок
Сообщения
7
Репутация
0
Большое спасибо AZJIO
Проблема решена.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
Вариант 1 - _GUICtrlListView_SetItemText() - это прекрасно работает! Индекс элемента (строки) начинается с 0.
Вариант 2 - GUICtrlSetData() - нужно знать ID (не индекс) элемента (см. GUICtrlCreateListViewItem()), и задавать полностью строку, например "Col0|Col1|Col2".
 
Верх