Компонент Delphi ListBox служит для отображения списков строк. Каждая строка ListBox хранит данные в формате String(рис 1).
ListBox представляет собой упорядоченную совокупность связанных между собой элементов, являющиеся текстовыми строками. Пример списков можно посмотреть в MS Office, например, для отображения размера шрифтов. ListBox не позволяет редактировать список пользователю сделать это можно только программно. Компонент ListBox может обращаться к текстовому файлу для считывания информации и для сохранения строк в текстовый файл.
- ListBox1.Items.LoadFromFile(‘название Файла’); загрузка из файла;
- ListBox1.Items.SaveToFile(‘название Файла’); сохранение в файл;
- Для добавления строки в конец списка можно использовать команду
ListBox1.Items.Add(‘Новая Строка’); - Для добавления строки перед строкой n используется команда
ListBox1.Items.Insert(n, ‘Новая_Строка’); новая строка получает номер n; - Для получения выделенной строки используется команда
Vst:=ListBox1.Items[ListBox1.ItemIndex]; где Vst — текст выделенной строки; - Для удаления строки используется команда
ListBox1.Items.Delete(i); где i — номер строки.
Основное свойство ListBox — Items заполнить его можно во время проектирования нажав на многоточие около этого свойства в окне Oject Inspectror(рис 2).
В компоненте ListBox разрешается множественный выбор благодаря свойству MultiSelect(рис 3).
ListBox – отображает список строк и позволяет пользователю выбрать из него необходимые строки. В список добавляются автоматически полосы прокрутки, если все строки не помещаются в окне компонента Дельфи.

Основное свойство компонента это Items (тип TStrings). Задаем во время проектирования:

ListBox не разрешает редактировать список пользователю после компиляции проекта, а также список всегда развернут и можно допустить множественный выбор – свойство MultiSelect. Если MultiSelect = true, то значение ItemIndex соответствует тому элементу списка, который находится в фокусе. При множественном выборе проверяется свойство Selected[Index: Integer] тип Boolean. Запретить работу клавиш Ctrl и Shift при выборе можно в свойстве ExtendedSelect, задав значение false.
Пример, следующий код для каждой из выбранных строк выдает сообщение вида «Выбрана строка…»:
For i:=0 to ListBox1.Items.Count-1 do
If (ListBox1.Selected[i]) then
ShowMessage (‘Выбрана строка’ + ListBox1.Items.Strings[i]);
Если MultiSelect = false, то выбор возможет только для одного элемента. По умолчанию индекс равен ItemIndex = -1. Лучше самому задать в событии формы OnCreate оператор вида ListBox1.ItemIndex = 0;.
Свойство Columns задает количество столбцов, Sorted — упорядочить по алфавиту.
Свойство
Описание
Action
Определяет действие, связанное
с данным компонентом
Anchors
к родительскому при изменении размеров
последнего
Count
Определяет число строк в списке
ItemIndex
Порядковый номер элемента,
выделенного в списке
TopIndex
Указывает индекс элемента, видимого вверху
списка. При изменении сдвигает видимую
часть списка
Метод
Описание
Clear
Удаляет все элементы
ItemAtPos
Existing: Boolean): Integer;
Возвращает индекс элемента списка,
координатами Pos
ItemRect
Возвращает прямоугольник, указанный
элемент Item списка
Show
Делает видимым невидимый индикатор
SetFocus
Передает фокус элементу
- OnClick – наступает при щелчке на элементе списка;
- OnData – наступает в виртуальных списках, когда приложению надо отобразить очередную строку списка;
- OnDataObject – наступает в виртуальных списках, когда со строками виртуального списка надо связать какие-то объекты;
- OnDrawItem – наступает при необходимости перерисовать элемент списка;
OnKeyDown – наступает при нажатии пользователем любой клавиши (можно распознать нажатую клавишу в обработчике). OnKeyPress – событие наступает при нажатии пользователем клавиши символа (можно распознать вводимый символ в обработчике, а также запретить ввод). OnKeyUp – наступает, когда пользователь отпустил какую-либо клавишу (также можно распознать клавишу).
OnMouseItem – наступает при необходимости перерисовать элемент в списке с изменяемой высотой элементов.
. delphi работа с listbox листбокс связать с стринггридом в делфи как связать листбокс и ричэдит delphi listbox осциллограф ListBox редактировать столбец delphi
Программирование на Delphi
14. ListBox – список выбора
Списки выбора хранят в себе какие-то списки, и дают пользователю возможность выбирать одну из указанных строк. Часто их применяют в окнах с заданными параметрами, чтобы пользователь мог выбрать один из параметров.
Чтобы получить доступ к строкам списка, нужно воспользоваться свойством Items компонента ListBox . Это свойство имеет тип TStrings (строки), с таким типом мы сталкивались, когда обрабатывали компонент Memo .
Посмотрим на практике, как работать с данным компонентом. Создайте новое приложение, установите на него один компонент ListBox , и под ним – один Edit для вывода той строки, которую выбрал пользователь:

Рис. 12.1. Внешний вид формы
Затем дважды щелкните по свойству Items компонента ListBox . Перед вами откроется уже знакомый редактор строк. Наберите названия операционных систем:
Каждое название операционной системы должно быть на отдельной строке. Нажмите «ОК», чтобы сохранить результат. Теперь создайте для компонента ListBox обработчик события onClick . Мы уже знаем, что это событие срабатывает всякий раз, когда пользователь выберет одну из строк в указанном списке.
В обработчике событий напишите только одну строку:
Эта строка присваивает свойству Text компонента Edit тот текст, который хранится в выбранной строке списка ListBox . Свойство Items имеет свое свойство Strings , которое представляет собой массив из строк списка. Указав индекс массива, мы можем получить доступ к нужной строке. В примере в качестве индекса указано свойство ListBox1.ItemIndex , которое имеет тип Integer и возвращает элемент выбранной строки в массиве строк. Кстати, когда вы поставите точку и откроется список, там вы этого свойства не обнаружите, так что придется писать его вручную.
Сохраните пример в новую папку, откомпилируйте и посмотрите, как он работает.
Кроме того, мы имеем возможность программно добавлять в ListBox новую строку или удалять выбранную. Киньте на форму еще две кнопки и напишите на них – «Добавить строку», «Удалить строку». Добавлять будем строку, написанную в компоненте Edit , а удалять – выделенную.
Для кнопки «Добавить» впишите:
а для кнопки «Удалить»:
Сохраните проект, откомпилируйте и посмотрите, как он работает.
Часто бывает необходимым предоставить пользователю возможность множественного выбора. Пользователь, удерживая клавишу , щелкает по строкам и выбирает нужные. Для этого у ListBox имеется свойство MultiSelect (множественный выбор). По умолчанию оно равно False , то есть запрещает пользователю выбрать несколько строк. Создадим еще одно приложение, в котором продемонстрируем возможность множественного выбора.
Установите на форму один ListBox и один Memo , ниже – кнопку с надписью «Копировать». При нажатии на кнопку будем искать у ListBox выделенные строки и копировать их в Memo . На рисунке 12.2 в левой части установлен компонент ListBox , а в правой – Memo .

Рис. 12.2. Внешний вид приложения
Войдите в редактор строк ListBox и напишите там
и так далее, пока не заполните ListBox так, чтобы его не нужно было прокручивать. Установите свойство MultiSelect у ListBox в True . Не забудьте очистить Memo . Теперь для кнопки напишем следующий код:
Вначале мы очистили Memo, чтобы пользователь мог несколько раз опробовать выбор и копирование строк, и строки в Memo не скапливались.
Затем мы создаем цикл, чтобы обрабатывать ListBox построчно. Первая строка всегда имеет нулевой индекс, а свойство Count во всех объектах TStrings возвращает количество строк в объекте. Нам приходится вычесть единицу, так как индексы начинаются не с 1, а с 0. Далее в цикл мы поместили условный оператор if – если условие верно (то есть строка выделена), то производим добавление строки в Memo . За это отвечает свойство Selected (Выделено) с указанием индекса строки. Если оно равно True , то строка выделена.