Все очень похоже на работу с тмето. Для большей ясности давайте добавим к нашему приложению еще две кнопки Добавить и Удалить строку.
Для кнопки Добавить в обработчике события onclick напишем следующий код:
ListBoxi.Items.Add('Новая строка')
Для кнопки Удалить напишем такой текст программы:
ListBoxi.Items.Delete(ListBoxi.Itemlndex);
Очевидно, что комментарии здесь излишни. Получилась полная аналогия c TMemo.
Бывают ситуации, когда необходимо выбрать несколько элементов в списке. Для этого у компонента ListBox есть свойство Multiseiect. Если в нем установить значение true, то можно будет выбирать мышью несколько строк. Для этого можно щелкать по нужным элементам, удерживая на клавиатуре кнопку <Ctrl>.
Создадим пример, который проиллюстрирует работу компонента ListBox с возможностью множественного выбора. Для этого на форму поместим один компонент ListBox (назовем его MultiListBox), один компонент Memo (назовем его ResuitMemo) и одну кнопку. В компонент ListBox нужно ввести несколько значений, чтобы было что выделять, и установить у него свойство Multiseiect в true.
По нажатии кнопки мы будем искать все выделенные строки и переносить их в ResuitMemo. По событию onclick для кнопки мыши напишем код, который приведен в листинге 7.3.
procedure TFormi.CheckButtonclick(Sender: TObj ect); begin ResuitMemo.Clear;
if MultiListBox.Selected[0] then ResuitMemo.Lines.Add(MultiListBox.Iterns.Strings[0]);
if MultiListBox.Selected[1] then
ResuitMemo.Lines.Add(MultiListBox.Items.Strings[l]); end;
В первой строке очищается содержимое компонента Memo. Это чисто косметическое действие, чтобы наша программа выглядела более эргономично.
У компонента ListBox есть свойство selected. Это свойство имеет тип массива в виде булевых значений. Таких значений ровно столько же, сколько и строк в компоненте ListBox. Чтобы узнать, выделена ли определенная строка, нужно проверить соответствующий элемент в массиве select.
Для иллюстрации сказанного проверяется, выделена ли нулевая строка MultiListBox.selected[0]. Если да, то текст этой строки добавляется в компонент Memo. Точно таким же образом проверяется первая строка.
Алгоритм проверки, показанный здесь, далеко не совершенен, потому что мы еще не знаем, что такое циклы, и не увидели их работу на практике. В дальнейшем вы сможете улучшить этот пример и сделать его более универсальным, а пока нам достаточно и этого.