Простой и комбинированный списки

Список представляет собой упорядоченную совокупность взаимосвязанных элементов, являющихся текстовыми строками.

Простой список представляет собой прямоугольную область, в которой располагаются его строковые элементы. Для работы с простым списком в Delphi предназначен компонент ListBox.

Если количество строк больше, чем их может поместиться в видимой области списка, то у области отображения появляется полоса прокрутки. Ориентация полосы прокрутки, а также число столбцов в области списка зависят от свойства Columns.

При работе со списком можно управлять номером элемента, который в видимой области списка отображается верхним. Это обеспечивается свойством TopIndex, который доступен на этапе выполнения приложения.

Список может иметь обычную рамку или не иметь. Наличие рамки определяется свойством BorderStyle

Комбинированный список объединяет поле редактирования и список. Пользователь может выбирать значение из списка или вводить его непосредственно в поле. Для работы с комбинированным списком служит компонент ComboBox.

В отличие от простого, комбинированный список не может иметь горизонтальную полосу прокрутки и допускает выбор только одного значения.

Свойство Style определяет внешний вид и поведение комбинированного списка.

Свойство DropDownCount определяет количество строк, которые одновременно отображаются в раскрывающемся списке (по умолчанию имеет значение 8).

Свойство DroppedDown логического типа позволяет определить, раскрыт ли список. Если это свойство имеет значение True, то список отображается в раскрытом виде. По умолчанию список свернут.

При работе с комбинированным списком генерируются следующие события:
— OnDropDown (открытие списка);
— OnCloseUp (закрытие списка);
— OnSelect (выбор элемента);
— OnChange (изменение текста в поле редактирования).

Пример:

procedure TForm1.ComboBox1Select(Sender: TObject);
begin
Edit1.Text:=ComboBox1.Text;
end;

Простой и комбинированный списки во многом похожи и имеет много общих свойств, методов и событий.

Они отличаются друг от друга прежде всего тем, что ListBox только отображает данные и позволяет пользователю выбрать из них то, что ему надо, a ComboBox позволяет также редактировать данные. Кроме того различается форма отображения списков. ListBox отображает список в раскрытом виде и автоматически добавляет в список полосы прокрутки, если все строки не помещаются в окне компонента. ComboBox позволяет отображать список, как в развернутом виде, так и в виде выпадающего списка, что обычно удобнее, так как экономит площадь окна приложения.

Основным для списков является свойство Items, которое содержит элементы списка и представляет собой массив строк.

Элементы списка можно отсортировать в алфавитном порядке. Наличие или отсутствие сортировки определяется свойством Sorted. При значении False (по умолчанию) элементы в списке располагаются в порядке в порядке их поступления в список. В противном случае, элементы автоматически сортируются по алфавиту в порядке возрастания. Действие этого свойства является статическим. Это означает, что при добавлении к отсортированному списку новых строк они размещаются на указанной позиции или в конце списка. Чтобы отсортировать список, нужно сбросить значение свойства в False, а затем снова установить значение true.

Пользователь может выбирать отдельные строки списка. Выбранный в списке элемент определяется свойством ItemIndex

Edit1.Text:=IntToStr(ListBox1.ItemIndex);

Начальное значение ItemIndex невозможно задать во время проектирования. По умолчанию ItemIndex = -1. Это означает, что ни один элемент списка не выбран.

По умолчанию в списке можно выбрать только один элемент. Для выбора двух и более элементов свойство MultiSelect, управляющее возможностью выбора нескольких строк, устанавливается в значение True.

Число выбранных элементов в списке возвращает свойство SelCount.

Для определения номеров выбранных строк можно просмотреть значения свойства Selected, представляющего собой массив логических значений.

ListBox1.Selected[2]:=True;

При выборе элементов списка происходит событие OnClick, которое можно использовать для обработки выбранных строк.

Edit1.Text:=ListBox1.Items[ListBox1.itemindex];

Добавить комментарий