Как достать данные из ListBox'а?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Как достать данные из ListBox'а?

Сообщение qivi »

Как получить выделенную строку ЛистБокса для записи её в переменную типа стринг...
Не свойство Каптион ни свойство Текст не помогают.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Эм... Вроде обычный способ работает:

Код: Выделить всё


if ListBox1.Selected[i] then str:=ListBox.Items[i]

Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Nik спасибо.

Я ещё читаю мол основной клас итемс и всё черз него, а лазарус выдаёт ошибки на него (я про подстановку индекса не догадался), я уж попробовал и через каптион и через текст... вобщем спас.
eastorwest
новенький
Сообщения: 57
Зарегистрирован: 23.07.2009 20:21:46
Откуда: Н-ск

Сообщение eastorwest »

"Правильнее" использовать свойство ItemIndex класса TCustomListBox:

Код: Выделить всё

property ItemIndex: Integer; [rw] // ItemIndex: Integer to indicate the currently selected item (zero origin)

Тогда поиск с циклом не потребуется:

Код: Выделить всё

ListBox1.Items[ListBox1.ItemIndex]
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

eastorwest писал(а):"Правильнее" использовать свойство ItemIndex класса TCustomListBox:

Код: Выделить всё

ListBox1.Items[ListBox1.ItemIndex]

Этот вариант подходит только если выделен 1 пункт. Если задействован MultiSelect, так получить выделенные пункты не получится.

PS. Вообще неплохо было добавить в дополнение к Items (TStrings) ещё и что-то типа SelectedItems (TStrings). C учётом обычного использования ListBox такая возможность была логичной.
Ответить