Урок № 4 Компоненты-списки
Цель: Научится использовать компоненты-списки TListBox и TComboBox
Основное содержание работы
В целочисленном массиве найти максимальный и минимальный элементы и поменять их местами.
Краткие теоретические сведения.
-
Компонент TListBox
Страница Палитры Компонентов: Standard.
Иерархия:
TObject→TPersistent→TComponent→TControl→TWinControl→
TCustomListBox→ TListBox
Компонент TListBox предназначен для отображения списка строк на экране - список List Box.
Этот компонент имеет в своем составе объект-список, являющийся экземпляром класса TStrings и содержащий набор строк с ассоциированными с ними произвольными объектами. Если говорить точнее, используется не сам абстрактный класс TStrings, а его одноименные потомки с переопределенными методами.
Таким образом, компонент List Box, являющийся экземпляром класса TListBox, позволяет отображать на экране список строк, каждая из которых может быть связана, например, с некоторым рисунком. Непосредственным предком класса TListBox является класс TCustomListBox, который порожден от класса TWinControl. Следовательно, компонент List Box является оконным управляющим элементом.
Основные характеристики списка List Box заложены в классе TCustomListBox. Главными из них являются наличие списка строк класса TStrings, средств отображения списка и возможность манипулирования его элементами.
Основные свойства класса TCustomListBox:
property Itemlndex: Integer;
Определяет индекс выделенного элемента в списке. Нумерация элементов начинается с нуля. Если выделенного элемента нет, это свойство принимает значение, равное -1. Если в списке может быть выделено несколько элементов, указывается индекс активного выделенного элемента. Свойство доступно только на этапе выполнения программы.
property Items: TStrings;
Задает элементы списка.
property MultiSelect: Boolean;
Определяет, разрешается ли одновременно выделять несколько элементов списка (если True, то такое выделение возможно, в противном случае выделить можно только один элемент).
property Selected [Index: Integer]: Boolean;
Если i-ый элемент списка выделен, то Selected[i] равняется True, в противном случае - False. Свойство доступно только на этапе выполнения программы.
property Sorted: Boolean;
Указывает, должны ли строки в списке автоматически сортироваться в алфавитном порядке.
Метод procedure Clear удаляет все элементы списка.
Событием по умолчанию для списка является событие OnClick.
-
Combo Box - комбинированная строка ввода
Страница Палитры Компонентов: Standard.
Иерархия:
TObject→TPersistent→TComponent→TControl→TWinControl →
TCustomComboBox
Комбинированная строка ввода Combo Box является экземпляром класса TCustomBox и объединяет в себе возможности строки ввода Edit и списка List Box. По внешнему виду компонент Combo Box напоминает обычную строку ввода Edit, но дополнительно имеет в правой части кнопку со стрелкой, направленной вниз.
Если щелкнуть мышью по этой кнопке, появится выпадающий список, подобный списку компонента List Box. Наличие строки ввода у компонента Combo Box расширяет его возможности по сравнению с обычным списком List Box. Например, используя строку ввода, можно вводить в список новые элементы, осуществлять поиск нужного элемента в списке, отображать активный элемент списка.
Основные характеристики комбинированной строки ввода заложены в классе TCustomComboBox, являющимся непосредственным предком класса TCustomBox. Предком класса TCustomComboBox является непосредственно базовый класс всех оконных элементов управления TWinControl.
Основные свойства класса TСustomComboBox:
property DropDownCount: Integer;
Определяет максимальное число элементов, отображаемое в раскрывающемся списке.
property DroppedDown: Boolean;
Указывает, отображается ли раскрывающийся список в данный момент. Свойство доступно только на этапе выполнения программы.
property Itemlndex: Integer;
Определяет индекс выделенного элемента в списке. Нумерация элементов начинается с нуля. Если выделенного элемента нет, оно принимает значение, равное -1. Свойство доступно только на этапе выполнения программы.
property Items: TStrings;
Так же, как и в классе TCustomListBox, задает элементы списка.
type TComboBoxStyle = (csDropDown, csSimple, csDropDownList, csOwnerDrawFixed, csOwnerDrawVariable); property Style: TComboBoxStyle;
Определяет стиль изображения списка:
csDropDown - строки списка имеют одинаковую фиксированную высоту, совпадающую с окном редактирования, что позволяет вводить или редактировать текст;
csSimple - список всегда раскрыт;
csDropDownList - строки списка имеют одинаковую фиксированную высоту, окно редактирования отсутствует;
csOwnerDrawFixed - строки списка имеют высоту, определяемую свойством ItemHeight, и не могут редактироваться в строке ввода;
csOwnerDraw Variable - строки списка имеют высоту, определяемую в обработчике события OnMeasureltem, возникающем при необходимости получения высоты элемента перед его
перерисовкой, и не могут редактироваться в строке ввода.
type TCaption = string; property Text: TCaption;
Содержит текст выбранной или введенной пользователем строки. Свойство унаследовано от класса TControl.
Поскольку в классе TComboBox по сравнению с классом TListBox отсутствует свойство MultiSelect, то в компоненте Combo Box не допускается множественный выбор.
Основные операции для обработки списка в компоненте Combo Box - добавление, удаление, поиск, сортировка элементов - осуществляется так же, как и в списке List Box.
Событием по умолчанию для комбинированной строки ввода Combo Box является событие OnChange, возникающее при изменении текста в окне редактирования в результате прямого редактирования текста или в результате выбора из списка.