Списки выбора (TListBox) в Delphi

Все очень похоже на работу с тмето. Для большей ясности давайте добавим к нашему приложению еще две кнопки Добавить и Удалить строку.

Для кнопки Добавить в обработчике события 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. Точно таким же образом проверяется первая строка.

 

Алгоритм проверки, показанный здесь, далеко не совершенен, потому что мы еще не знаем, что такое циклы, и не увидели их работу на практике. В дальнейшем вы сможете улучшить этот пример и сделать его более универсальным, а пока нам достаточно и этого.

dle

Помоги проекту! Расскажи друзьям об этом сайте: