Создание и работа со списками
Для создания списков существуют 2 компоненты ListBox и ComboBox.
Компонент класса TListBox представляет собой стандартный для Windows список выбора, с помощью которого пользователь может выбрать один или несколько элементов выбора. В компоненте предусмотрена возможность программной прорисовки элементов, поэтому список может содержать не только строки, но и произвольные изображения.Свойства и методы компоненты ListBox (таблица 11):
Таблица 11 - Свойства и методы компоненты ListBox
Название | Назначение |
Свойства | |
Name:string | Наименование компоненты (по умолчанию ListBox1) |
Items: TStrings; | Содержит набор строк, показываемых в компоненте |
Itemlndex: Integer; | Содержит индекс сфокусированного элемента. Если MultiSelect=False, совпадает с индексом выделенного элемента |
TBorderStyle: перечисл | Определяет стиль рамки: bsNone - нет рамки; bssingle - рамка толщиной 1 пиксель |
Count: Integer; | Содержит количество строк в компоненте |
MultiSelect: Boolean | Разрешает/отменяет выбор нескольких элементов |
SelCount: Integer | Содержит количество выбранных элементов |
Selected[X: Integer] : Boolean; | Содержит признак выбора для элемента с индексом х (первый элемент имеет индекс 0) |
Sorted: Boolean | Разрешает/отменяет сортировку строк в алфавитном порядке |
Методы | |
Count | Определяет количество элементов в списке |
Clear | Удаляет весь список |
Add | Добавляет новый элемент в список |
Delete | Удаляет определённый элемент из списка |
Insert | Вставляет новый элемент в список |
LoadFromFile : TString. | Для загрузки списка из файла |
SaveToFile : TString. | Для сохранения списка в файле |
Комбинированный список TComboBox представляет собой комбинацию списка TListBox и редактора TEdit, и поэтому большинство его свойств и методов заимствованы у этих компонентов. Существуют пять модификаций компонента, определяемые его свойством style: csSimple, csDropDown, csDropDownList, csOwnerDrawFixed И csOwner DrawVariabie. В первом случае список всегда раскрыт, в остальных он раскрывается после нажатия кнопки справа от редактора (рис. 16). В модификации csDropDownList редактор работает в режиме отображения выбора и его нельзя использовать для ввода новой строки (в других модификациях это возможно). Модификации csOwnerDrawFixed и csOwnerDrawVariable используются программной прорисовки элементов списка. Используемые для этого свойства и методы полностью совпадают со свойствами и методами TListBox аналогичного назначения.
Фактически “своими” у компонента являются лишь свойства и события, связанные с раскрытием списка:
Рис. 16 - Примеры комбинированных списков
Свойство DropDownCount определяет количество элементов списка, появление которых еще не приводит к необходимости прокрутки списка. По умолчанию это свойство имеет значение 8: если в списке указано 9 и более элементов (т. е. больше, чем содержит DropDownCount), при его раскрытии к окну будет добавлена полоса прокрутки. Свойство DroppedDown определяет, раскрыт ли в данный момент список. Это свойство доступно также для записи, что позволяет программно управлять состоянием списка. Событие OnDropDown происходит при изменении состояния списка.
Наполнение списка ведется методами Add, Append, Insert и т. п. его свойства Items класса TStrings.
Пример 1: По фамилии в списке вывести его должность.
1. Поместите на форму компоненты: 3 Label, ListBox и измените значения их свойств:
Свойство Caption у комконенты Label1 – ‘Список сотрудников’;
Свойство Caption у комконенты Label2 – ‘ ’;
Свойство Caption у комконенты Label3 – ‘Должность’;
2. Расположите компоненты как показано на рисунке 17 и введите текст программы для событий OnCreate для компоненты Form1 и OnClick для компоненты ListBox:
Рис. 17 - Пример приложения
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items[0]:='Иванов';
ListBox1.Items[1]:='Петров';
ListBox1.Items[2]:='Сидоров';
end;
procedure TForm1.ListBox1Click(Sender: TObject);
var i:byte;
begin
i:= ListBox1.ItemIndex; // номер выбранного элемента
case i of
0: Label2.Caption:='директор';
1: Label2.Caption:='менеджер';
2: Label2.Caption:='программист';
end;
end;
Пример 2: Просмотреть или добавить в список нового сотрудника.
1. Поместите на форму компоненты: 2 Label, ComboBox, Button, Edit и измените значения их свойств:
Свойство Caption у комконенты Label1 – ‘Список сотрудников’;
Свойство Caption у комконенты Label2 – ‘Введите сотрудника’;
Свойство Caption у комконенты Button1 – ‘Добавить в список’;
2. Расположите компоненты как показано на рисунке 18 и введите текст программы для событий OnClick для компоненты Button1:
Рис. 18 - Пример приложения
procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Items.Add(Edit1.Text);
end;