- •Источник: ©а.Я.Архангельский. 100 компонентов общего назначения библиотеки Delphi5
- •1. Компоненты ввода и отображения текстовой информации
- •1.1. Краткое описание компонентов
- •1.2 Отображение текста в надписях компонентов Label и Panel
- •1.3 Окна редактирования Edit и MaskEdit
- •1.4 Многострочные окна редактирования Memo и RichEdit
- •3.3.5 Компоненты выбора из списков — ListBox, CheckListBox и ComboBox
3.3.5 Компоненты выбора из списков — ListBox, CheckListBox и ComboBox
Пример компонентов, рассмотренных в данном разделе и обеспечивающих выбор из списка, приведен на рис. 7.
Рис. 7 Пример компонентов выбора из списков
Компоненты ListBoxиComboBoxотображают списки строк. Они отличаются друг от друга прежде всего тем, что ListBox только отображает данные и позволяет пользователю выбрать из них то, что ему надо, a ComboBox позволяет также редактировать данные. Кроме того различается форма отображения списков. ListBox отображает список в раскрытом виде и автоматически добавляет в список полосы прокрутки, если все строки не помещаются в окне компонента. ComboBox позволяет отображать список как в развернутом виде, так и в виде выпадающего списка, что обычно удобнее, так как экономит площадь окна приложения .
Основное свойство обоих компонентов, содержащее список строк, — Items, имеющее тип TStrings. Заполнить его во время проектирования можно, нажав кнопку с многоточием около этого свойства в окне Инспектора Объектов. Во время выполнения работать с этим свойством можно, пользуясь свойствами и методами классаTStrings—Clear,Addи другими.
В компоненте ListBox имеется свойствоMultiSelect, разрешающее пользователю множественный выбор в списке (на рис. 7 это свойство установлено в true в среднем верхнем списке). Если MultiSelect = false (значение по умолчанию), то пользователь может выбрать только один элемент списка. В этом случае можно узнать индекс выбранной строки из свойстваItemIndex, доступного только во время выполнения. Если ни одна строка не выбрана, то ItemIndex = -1. Начальное значение ItemIndex невозможно задать во время проектирования. По умолчанию ItemIndex = -1. Это означает, что ни один элемент списка не выбран. Если вы хотите задать этому свойству какое-то другое значение, т.е. установить выбор по умолчанию, который будет показан в момент начала работы приложения, то сделать это можно, например, в обработчике событияOnCreateформы, введя в него оператор вида
ListBox1.ItemIndex:=0;
Если допускается множественный выбор (MultiSelect = true), то значение ItemIndex соответствует тому элементу списка, который находится в фокусе. При множественном выборе проверить, выбран ли данный элемент, можно проверив свойство Selected[Index: Integer]типа Boolean.
На способ множественного выбора при MultiSelect = true влияет еще свойство ExtendedSelect. Если ExtendedSelect = true, то пользователь может выделить интервал элементов, выделив один из них, затем нажав клавишу Shift и переведя курсор к другому элементу. Выделить не прилегающие друг к другу элементы пользователь может, если будет удерживать во время выбора нажатой клавишу Ctrl. Если же ExtendedSelect = false, то клавиши Shift и Ctrl при выборе не работают.
Свойство Columns определяет число столбцов, в которых будет отображаться список, если он не помещается целиком в окне компонента ListBox (в среднем верхнем списке на рис.7 свойство Columns равно 2).
Свойство Sortedпозволяет упорядочить список по алфавиту. При Sorted = true новые строки в список добавляются не в конец, а по алфавиту.
Свойство Style, установленное вlbStandard(значение по умолчанию) соответствует списку строк. Другие значения Style позволяют отображать в списке не только текст, но и изображения.
Рассмотрим теперь компонент ComboBox. Стиль изображения этого компонента определяется свойствомStyle, которое может принимать следующие основные значения:
csDropDown |
Выпадающий список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст (правый список на рис. 7). |
csSimple |
Развернутый список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст (левый нижний список на рис. 7). |
csDropDownList |
Выпадающий список со строками одинаковой высоты, не содержащий окна редактирования. |
Выбор пользователя или введенный им текст можно определить по значению свойства Text. Если же надо определить индекс выбранного пользователем элемента списка, то можно воспользоваться обсуждавшимся в компонентеListBoxсвойствомItemIndex. Все сказанное выше обItemIndexи о задании его значения по умолчанию справедливо и для компонентаComboBox. Причем дляComboBoxзадание начального значенияItemIndexеще актуальнее, чем дляListBox. Если начальное значение не задано, то в момент запуска приложения пользователь не увидит в окне компонента одно из возможных значений списка и, вероятнее всего, не очень поймет, что с этим окном надо делать.
Если в окне проводилось редактирование данных, то ItemIndex = -1. По этому признаку можно определить, что редактирование проводилось.
Свойство MaxLength определяет максимальное число символов, которые пользователь может ввести в окно редактирования.
Если MaxLength = 0, то число вводимых символов не ограничено.
Как и в компоненте ListBox, свойство Sorted позволяет упорядочить список по алфавиту. При Sorted = trueновые строки в список добавляются не в конец, а по алфавиту.