Список (ListBox) и окно со списком (ComboBox)
Рамка
Рамка является средством объединения управляющих объектов в некоторые группы. Такие группы объектов обводятся рамкой, которая может иметь надпись (например Caption на рис. 2.12,б). Основные свойства рамки Name, Caption, Enabled, Font, HelpContextID, Visible по смыслу совпадают с одноименными свойствами объекта Форма. Если сделать рамку невидимой, то с формы исчезнут и все объекты, находящиеся в группе.
В практике создания интерфейса нередко возникает необходимость предоставить пользователю выбрать что-либо из готового списка, а также дополнить имеющийся список своими данными. Для этих целей и служат объекты "Список" и "Окно со списком".
Первый объект показывает окно со списком, обеспечивает выбор из списка, но не позволяет вводить новые элементы списка. Второй объект в зависимости от свойства "Стиль" позволяет получить однострочное текстовое окно (список "пролистывается" в этом окне), или текстовое окно с кнопкой вызова списка. В случае необходимости можно обеспечить возможность данных в текстовое окно. Внешний вид объектов показан на рис. 2.13, основные свойства и методы приведены в табл. 2.7.
Рис. 2.13. Текстовые окна со списком и списки
Спускаемая комби позволяет выбирать в текстовое окно элемент списка или вводить свои данные. Простая комби не предусматривает развертывание окна со списком, но позволяет прокручивать список клавишами Up Arrow и Down Arrow . Возможно также ввести данные в текстовое окно. Спускаемый список похож на спускаемую комби, но не позволяет вводить данные с клавиатуры. Эти три разновидности объекта ComboBox экономят площадь окна.
Объект "Список" (ListBox, рис. 2.13) не экономит место в окне и показывает список в развернутом виде. Он имеет две модификации – "простой список" и "блок проверки", задаваемые свойством Style. Первая модификация является обычным списком, вторая позволяет "включать" и "отключать" элементы списка.
Таблица 2.7
Основные свойства и методы объектов "Список (ListBox)", "Окно со списком (ComboBox)"
Наименование | Назначение | Наличие в объекте | |
ComBox | ListBox | ||
Свойства | |||
Имя | Имя объекта в программе | + | + |
Columns | Число колонок в списке | - | + |
Enabled | Способность реагировать на события | + | + |
Font | Шрифт надписи | + | + |
HelpContextID | Номер параграфа help-файла | + | + |
ItemData | Числа, ставящиеся в соответствие элементами списка | + | + |
List | Перечень элементов списка | + | + |
ListCount | Число элементов в списке | + | + |
ListIndex | Номер текущего выделенного элемента | + | + |
MultySelect | Возможность выделения нескольких элементов списка | - | + |
Selected | Фиксация выделения элементов | - | + |
Sorted | Включение сортировки элементов | + | + |
Text | Текст в окне со списком | + | - |
Visible | Видимость объекта | + | + |
Методы объектов | |||
<имя>.AddItem | Добавление элемента в список | + | + |
<имя>.RemoveItem | Удаление элемента из списка | + | + |
<имя>.KeyPress | Фиксация нажатия символьных клавишей, а также Enter и т.д. | + | + |
ComBox - окно со списком, ListBox - список, <имя> - имя объекта |
Свойства List, ItemData и Selected являются массивами. В первый массив записываются названия элементов списка, во второй – произвольные числа, поставленные программистом в соответствие элементам списка. В третьем – фиксируются состояния элементов (выбран/не выбран). Если свойство MultySelect имеет значение False, то номер выделенного элемента совпадает со значением свойства ListIndex. Счет элементов начинается с нуля.
Метод KeyPress используется для фиксации момента окончания ввода данных в окно со списком. Сигналом окончания может быть нажатие клавиши Enter, Tab, Up Arrow, Down Arrow и т.д. Если предполагается добавить в список новый элемент, то используют метод AddItem <название элемента списка>,<номер элемента в списке> и оператор ItemData(<номер элемента в списке>) = <число>. Для удаления элемента из списка используют метод RemoveItem.
2.3.9. Окно выбора устройства (DriveListBox),
список каталогов (DirListBox),
список файлов (FileListBox),
объект Common Dialog Control
Объекты предназначены для выбора дисков, каталогов и файлов. По существу, эти объекты являются списками, дополненными средствами автоматического заполнения списков дисков, каталогов и файлов. Внешний вид этих объектов показан на рис. 2.14, важнейшие свойства и методы перечислены в табл. 2.8.
а) б) в)
Рис. 2.14. Окно выбора диска (а), список каталогов (б) и список файлов (в)
При запуске программы в свойство Drive и Path записываются текущий диск и текущий путь. Если они должны быть другими, то эти свойства можно переопределить. Номер выбранного элемента списка попадает в свойство ListIndex. Выбранный элемент списка может быть определен оператором:
<имя переменной>=<имя объекта>.List(<имя объекта>.ListIndex).
Используя указанный оператор, можно "прочитать" имя выбранного диска, путь и имя выбранного каталога, путь и имя выбранного файла. При чтении имени диска следует иметь в виду, что при наличии метки тома в имя диска попадет и метка тома. Поэтому для правильного определения имени диска следует воспользоваться оператором, усекающим значение прочитанной переменной до двух левых: символов:
<имя переменной> = Left(<имя переменной>,2).
Значения свойств Drive, Path и FileName обновляются при каждом выборе из списков объектов DriveListBox, DirListBox и FileListBox соответственно. Этот выбор фиксируется в обработчиках событий Change для списков дисков и каталогов и в обработчике события Click для списка файлов.
Три описанных объекта позволяют создать достаточно гибкую систему работы с дисками, каталогами и файлами. Еще больше удобств создает стандартный объект Microsoft Common Dialog Control, поставляемый как расширение системы. Для настройки объекта используется окно настройки (рис. 2.15). В этом окне можно настроить все типы окон, получаемых с помощью объекта. Вид окон показан на рис. 2.16 - 2.18, основные свойства и методы приведены в табл. 2.9.
Таблица 2.8
Основные свойства и методы объектов DriveListBox, DirListBox, FileListBox
Наименование | Назначение | Наличие в объекте | ||
DrLB | DiLB | FLB | ||
Свойства | ||||
Имя | Имя объекта в программе | + | + | + |
Drive | Имя диска | + | - | - |
FileName | Имя файла | - | - | + |
HelpContextID | Номер параграфа help-файла | + | + | + |
List | Перечень элементов списка | + | + | + |
ListCount | Число элементов в списке | + | + | + |
ListIndex | Номер текущего выделенного элемента | + | + | + |
Path | Путь | - | + | + |
Visible | Видимость объекта. | + | + | + |
Методы | ||||
Change | Фиксация выбора диска или каталога | + | + | + |
Click | Фиксация выбора файла | + | + | + |
DrLB - окно выбора диска, DiLB - список каталогов, FLB - список файлов |
Объект CommonDialog, установленный на форме, при работе программы на экране отсутствует. Для его появления необходимо в одном из обработчиков событий (обычно связанного с кнопкой CommandButton) поставить вызов одного из методов ShowOpen, ShowSave, ShowPrinter.
Назначение свойств и методов видно из табл. 2.9. Исключение составляет свойство Filter, которое ограничивает список файлов в окне объекта (рис. 2.16, 2.17) и имеет формат записи:
<описание 1>|< маска 1>|< описание 2>|< маска 2> …,
например, все файлы (*.*)|*.*| файлы Word (*.doc)|*.doc|.
Рис. 2.15. Окно настройки свойств CommonDialog
Рис. 2.16. Окно открытия файла
Рис. 2.17. Окно сохранения файла
Рис. 2.18. Окно печати файла
Таблица 2.9
Основные свойства и методы объекта Common Dialog
Наименование | Назначение |
Свойства | |
Имя | Имя регистрации объекта в программе |
Custom | Вызов карты настройки |
DefaultExt | Тип файла по умолчанию, добавляется при сохранении файла к его имени |
DialogTitle | Заголовок окна |
FileName | Имя и путь к файлу |
FileTitle | Имя файла без пути |
Filter | Строка, описывающая маски имен файлов |
FilterIndex | Номер маски, которая будет показана в окне Тип файла |
Copies FromPage ToPage Orientation | Число печатаемых копий Первая страница печати Последняя страница печати Ориентация бумаги |
InitDir | Начальный путь к каталогу для открытия файла или его сохранения и печати. |
Методы | |
ShowOpen | Показать окно открытия файла |
ShowSave | Показать окно сохранения файла |
ShowPrinter | Показать окно печати файла |
2.3.10. Объекты "Горизонтальная полоса прокрутки"
и "Вертикальная полоса прокрутки
(Horizontal Scroll Bar, Vertical Scroll Bar)
Полосы прокрутки встроены в объекты, которые имеют свойство List, а также существуют самостоятельно. Внешний вид этих объектов показан на рис. 2.19, основные свойства и методы приведены в табл. 2.10. Они применяются в случае необходимости показать в окне объект, который имеет
Рис. 2.19. Полосы прокрутки | размер больше, чем окно просмотра. В этом случае полосы прокрутки следует рассматривать как некоторые оси координат, а их указатели – как индикаторы положения окна просмотра на площади, занимаемой объектом. Полосы прокрутки снабжены концевыми кнопками управления и указателем. |
Таблица 2.10
Основные свойства и методы полос прокрутки
Наименование | Назначение |
Свойства | |
LargeChange | Шаг изменения Value при щелчке по полосе прокрутки |
SmallChange | Шаг изменения Value при щелчке по кнопке полосы прокрутки |
Value | Значение, характеризующее положение указателя |
Max | Максимальное значение свойства Value, соответствует положению указателя в конце полосы прокрутки (не более 32767) |
Min | Максимальное значение свойства Value, соответствует положению указателя в начале полосы прокрутки (не менее -32767) |
Методы | |
Change | Обработка события перемещения указателя кнопкой или мышью |
Полоса прокрутки может рассматриваться как некоторый счетчик, управляемый указателем. Максимальное и минимальное число, которое может быть записано в счетчик, определяется свойствами Max и Min, текущее значение числа, записанного в счетчик, хранится в свойстве Value. Для изменения свойства Value при движении указателя предусмотрено два шага LargeChange и SmallChange, соответствующие щелчку мыши по полосе прокрутки и по ее концевой кнопке. Любое изменение положения указателя вызывает метод Change.