Элементы управления в версиях Professional и Enterprise
В этом разделе рассказывается о нескольких наиболее часто используемых управляющих элементах, поставляемых в версиях Professional и Enterprise системы Visual Basic. Все эти элементы доступны через диалоговую панель Project|Components.
Управляющий элемент Microsoft Comm 5.0
При помощи элементов управления коммуникациями можно легко создать собственный коммуникационный пакет, работающий через модем с телефонной линией (не с сетью Internet). Также можно самостоятельно изменить его настройки при помощи многочисленных свойств. На настоящий момент максимальной доступной скоростью обмена является 28 800 бод. Кроме скорости обмена можно изменять такие настройки, как число бит данных, наличие бита четности и др. Элемент управления коммуникациями служит блестящим примером, демонстрирующим достоинства событийно-управляемого языка программирования. К примеру, можно создать элемент управления, вызываемый только при приходе сигнала активности от коммуникационного порта.
Приведенная ниже таблица содержит ключевые свойства
элементов управления коммуникациями.
|
|
CommEvent | Ключевое слово элементов управления коммуникациями. Различные значения этого свойства соответствуют как событиям, так и ошибкам коммуникационного порта. Например, если значение этого свойства равно константе comEOF (=7), то это говорит о наличии символа конца файла (ASCII 26) в буфере приема. |
CommPort | При записи устанавливает адрес коммуникационного порта, при чтении - возвращает адрес текущего порта. (1 - для порта Сош 1,2— для порта Corn 2 и т.д.) |
Settings | Устанавливает или возвращает следующие параметры: скорость обмена, наличие бита четности, число бит данных, число стоп-битов. Может устанавливаться как при создании элемента, так и во время работы приложения. |
PortOpen | Открывает и закрывает коммуникационный порт. |
Input | Возвращает символы, находящиеся в буфере приема. |
Output | Посылает строку символов в буфер отправки. |
Элемент управления коммуникациями
реагирует только на событие OnComm. Это событие соответствует изменению
значения свойства CommEvent. При возникновении события можно, проанализировав
значение свойства CommEvent, вызвать соответствующий обработчик события.
Так же, как и остальные управляющие
элементы, элемент управления коммуникациями дает возможность легкой настройки
свойств через диалоговую панель. Для этого достаточно в окне Properties
перейти к пользовательским настройкам (Custom). В появившейся диалоговой
панели можно установить необходимые свойства элемента управления.
Пример использования элемента управления коммуникациями.
В качестве простейшего примера использования элемента управления коммуникациями приведем программу принимающую информацию через один из коммуникационных портов (в данном примере используется порт СОМ I):
Private Sub cmdGetData Click ()
Dim Foo As Integer, TheData
As String MsCornml. CommPort = 1 ' COM1
'28800 baud, no parity, 8
data, and 1 stop bit.
'the Communications control
can't go faster than 28800 baud
MsCornml.Settings = "28800,N,8,1"
MsCornml.InputLen = 0 ' Clear
the comm buffer
MsCornml.PortOpen = True
'Send the usual wake up signal
to the modem.
MsCornml.Output = "AT" + Chr$(13)
Do
Foo = DoEvents ()
MsCornml.InputLen = 0 'clear buffer
TheData = TheData + ComiTil .Input "TheData will contain the data
Loop Until Commi.CommEvent
= comEvEOF
MsCornml. PortOpen = False
'close the port
End Sub
Управляющий элемент редактирования с маской ввода Masked Edit Control 5.0
Применение элемента редактирования
с маской ввода позволит управлять информацией, вводимой в панель текста,
без написания дополнительного кода. Использование элемента редактирования
с маской ввода напоминает использование обычной текстовой панели с той
лишь разницей, что можно ограничивать вводимые символы без написания дополнительного
кода в поле Key Events. Также можно использовать определенные символы для
указания пользователю о типе и внешнем виде вводимых данных (например,
телефонного номера или номера социальной страховки). Управляющий элемент
редактирования с маской ввода относится к классу элементов с определенными
данными (data - aware controls).
При работе с элементами редактирования
с маской ввода наиболее важным является свойство Mask. Можно устанавливать
это свойство как при создании элемента, так и во время выполнения. Это
свойство предназначено для задания маски, по которой пользователь вводит
данные. Например, если надо получить номер телефона в формате, принятом
в США, то необходимо установить свойство Mask следующим образом:
MaskEdBoxl.Mask = " (###) -###-####"
В результате элемент редактирования
с маской ввода будет выглядеть так, как представлено на рисунке слева.
(Естественно, при создании
этого элемента не надо использовать поле ограничений в окне Properties.)
Элемент редактирования с маской
ввода имеет собственную диалоговую панель со списком свойств.
В общем случае строка, задаваемая
свойством Mask, работает аналогично строке формата в выражении Format.
Так, в предыдущем примере символ "#" обозначает цифру, а символ " - " используется
как разделитель.
Наиболее часто употребляемые символы маски приведены
в следующей таблице.
|
|
|
Требуется цифра. |
|
Десятичная точка. Внешний вид данного символа при выводе зависит от текущих настроек системы Windows. |
|
Разделитель множества. Как и в предыдущем случае, внешний вид выводимого символа зависит от настроек операционной системы. |
|
Разделитель для поля времени. |
|
Разделитель для поля даты. |
|
|
|
Требуется буква. Например, а - z или А - Z. |
|
Требуется символ ASCII, код которого находится в промежутке 32-126 или 128 -255. |
|
Переводит все вводимые символы в верхний регистр. |
|
Переводит все вводимые символы в нижний регистр. |
|
Требуется буква или цифра. |
|
Позволяет ввести букву или цифру. |
|
Позволяет ввести цифру. |
|
|
Пустая строка (" " в коде) | (Используется по умолчанию.) Означает отсутствие маски ввода. В этом случае панель редактирования с маской ввода ведет себя как обычная текстовая панель. |
## - ??? - ## | Маска для ввода даты (соответствует стандарту, принятому в США). |
## - ## - ## | То же самое. За исключением того, что название месяца заменяется его номером. |
##:## ?? | Маска для ввода времени (расширенный формат). |
##:## | Маска для ввода времени (сокращенный формат). |
Элемент управления средствами мультимедиа
Устройства мультимедиа, такие,
как проигрыватель компакт-дисков, становятся неотъемлемой частью современного
персонального компьютера. Идея совместного объединения текста, звука и
изображения действительно является передовой для нашего времени.
Элементы управления средствами
мультимедиа дают пользователю возможность воспользоваться командами интерфейса
media control interface (MCI). Команды MCI позволяют управлять аудио- и
видеоустройствами и не зависят от используемого оборудования. При помощи
элемента управления средствами мультимедиа можно посылать такие команды,
как старт, перемотка вперед, перемотка назад, пауза и т.д. Всего этот-
элемент управления содержит около 60 свойств, поэтому вместо детального
их описания здесь приводятся только основные принципы работы, исходя из
которых можно самостоятельно настроить элемент управления, используя страницу
Custom Properties.
Это
просто набор кнопок с названиями: Prev, Next, Play, Pause, Bask, Step,
Stop, Record и Eject.
Всякий раз, когда пользователь
нажимает одну из кнопок, необходимо послать соответствующую команду MCI.
Но прежде чем сделать это, необходимо решить, нужно ли:
Вот и все!
Элемент управления фрагментами Microsoft Picture Clip Control 5.0
Элемент управления фрагментами Microsoft Picture Clip Control представляет собой еще один способ размещения растровых изображений (bitmaps) в элементе управления. Так же, как и в случае с "оживленными" кнопками, подобная технология позволяет сохранять ресурсы системы Windows, а также повышать скорость доступа к изображению. К примеру, такой элемент может использоваться для создания панели инструментов, что позволит пользователю настраивать инструментарий по собственному усмотрению. В этом случае вместо считывания каждого инструмента как отдельного растрового изображения, можно сделать это одним действием, воспользовавшись элементом управления фрагментами.
Из-за сложности в получении
одного большого растрового изображения из нескольких файлов, необходимого
при использовании элемента управления фрагментами, обычно используют элемент
List Image.
В любом случае полезно посмотреть
программу, использующую элемент управления фрагментами (например, программу
C:\VB\Samples\comptool\Picclip\Redtop.vbp).
Диалоговый элемент управления с закладками Microsoft Tabbed Dialog Control 5.0
Этот элемент управления дает
возможность создавать диалоговые панели с закладками, наподобие диалоговой
панели Tools/0ptions в системе Visual Basic. Этот элемент позволяет создавать
группу диалоговых панелей, каждая из которых снабжена собственной закладкой.
Как можно было заметить, первым
шагом при создании такого элемента является установка его размера, необходимого
для вывода информации в каждой закладке.
Пример:
использование элемента управления ярлыками
При создании этого управляющего элемента нужно:
Как и в случае с обычными диалоговыми панелями, можно использовать в элементе управления закладками кнопки ОК и Cancel.
Управляющие элементы Microsoft Windows Common Controls 5.0
Можно одним действием добавить к панели инструментов восемь управляющих элементов. Для этого необходимо выбрать из диалоговой панели Project|Components соответствующую строку. В этом разделе мы вкратце опишем эти управляющие элементы.
Управляющий элемент Image List
Использование элемента Image
List -это еще один способ размещения группы изображений в одном месте.
Эти изображения могут использоваться в любой части приложения (например,
в качестве изображений для панели инструментов). Ключевым моментом при
работе с элементом Image List является понимание принципов работы объектов
List Image (а также коллекции элементов List Image), которые определяют
изображения, используемые в управляющем элементе. (Можно рассматривать
элемент Image List как контейнер для коллекции List Image.) Проще всего
работать с элементом Image List при помощи его свойства (Custom), появляющегося
из диалоговой панели Property Pages.
Закладка Image на этой панели
позволяет добавить изображения при создании элемента.
(В процессе работы можно добавлять
изображения в коллекцию List Image при помощи метода Add).
Управляющий элемент Image
List может хранить одновременно как растровые изображения, так и иконки.
Так же, как и для других коллекций, можно ссылаться на хранящиеся изображения
при помощи индекса или ключа. Например, если назначить изображение ImageListI.
Listlmages(l), то команда
Set Picturel. Picture = ImageListI. Listlmages
(1) .Picture
' set Picture.
заполнит панель рисунка первым
изображением из коллекции. (Нумерация в коллекции List Images начинается
с 1.)
Следует отметить, что не существует
какого-либо ограничения на размер отдельного изображения, но общее число
изображении, которое может быть считано, ограничено размерами доступной
памяти.
Управляющий элемент List View
Управляющий элемент List View
позволяет выводить элементы на дисплей различными путями - по существу,
это те же пути, которые можно было наблюдать, работая с рабочим столом
системы Windows. Например, можно использовать List View для выравнивания
элементов по столбцам (с заголовком каждого столбца или без него). Элементы
при этом состоят из иконки и текста. Различные методы представления элемента
описываются свойством View, возможные значения которого приведены в таблице.
|
|
|
|
|
(Используется по умолчанию.) Каждый объект List Item состоит из полноформатной иконки и метки. |
|
|
Каждый объект List Item представляется иконкой малого размера и меткой, расположенной справа от иконки. Все элементы выравниваются по горизонтали. |
|
|
Как и в предыдущем случае, каждый объект .состоит из иконки малого размера и текстовой Сметки, расположенной справа от иконки. Но при .этом все объекты представляются в виде списка. |
|
|
Каждый объект элемента List Item представляется иконкой малого размера и меткой. Иконки и метки располагаются в колонках. Также для вывода пояснительного текста используются дополнительные колонки. |
Изображаемые элементы управляющего
элемента List View называются List Item объектами. Каждый объект List Item
имеет собственные свойства, описывающие его поведение. Наиболее важные
из них представлены в таблице далее.
Также можно выбрать заголовок
для выводимого столбца в управляющем элементе List View. Для этого необходимо
установить значение True/False для свойства Hide Column Headers. Соответствующий
заголовок хранится в объекте Column Header, а все заголовки колонок собраны
в коллекцию Column Headers.
|
|
|
Возвращает или позволяет установить индекс или ключ для иконки, ассоциированной с объектом List Item. |
|
Сообщает о том, что объект List Item был выбран пользователем (или позволяет его выбрать самостоятельно). |
|
Возвращает или позволяет установить индекс или ключ для иконки малого размера, ассоциированный с объектом. |
|
Возвращает или позволяет установить поясняющую строку для подэлемента, ассоциированного со специальным объектом List Item. |
|
Задает текст, который будет виден пользователем. |
Управляющий элемент Progress Bаr
Использование управляющего
элемента Progress Bar (.линейка прогресса) аналогично использованию вертикальной
линейки в элементе управления размерами. Он представляет собой линейку,
заполненную прямоугольными блоками. Далее описываются ключевые свойства
этого элемента.
Свойство Align предназначено
для автоматического выравнивания положения элемента на экране. Возможные
значения этого свойства сведены в следующую таблицу.
|
|
|
(Используется по умолчанию.) Размер и положение элемента могут быть произвольными. |
|
Линейка расположена наверху формы и имеет ширину, равную ширине формы. |
|
То же самое, но линейка расположена снизу от формы. |
|
Линейка выровнена по левому краю формы, а ее высота равна высоте формы. |
|
То же самое, но линейка выровнена по правому краю формы. |
Точно так же, как и в случае с полосой прокрутки, можно, изменяя свойства Min и Мах, установить границы изображаемой линейки прогресса. Свойство Value определяет текущую позицию прогресса.
Рассмотрим пример: пусть необходимо
изобразить количество времени, прошедшего с начала какого-нибудь процесса.
Для этого создадим элемент управления таймером, метку и линейку прогресса.
Теперь установим для свойства
Min значение 0, а для свойства Мах - значение 60. Свойство Interval для
элемента управления таймером следует установить в 1000 (что соответствует
1 секунде). Тогда следующий фрагмент кода будет изображать при помощи линейки
прогресса прошедшее время (в секундах).
Private Sub Timerl_Timer ()
Static Progress As Integer
Progress = (Progress + 1) Mod 60
Labell.Caption = Str$(Progress) & " seconds elapsed."
ProgressBarl.Value = Progress
End Sub
Управляющий элемент Slider Control
Управляющий элемент Slider
(бегунок) работает аналогично линейке прокрутки. Он представляет собой
небольшую линейку с делениями, по которой может перемещаться бегунок.
Пользователь может перемещать
бегунок обычным перетягиванием или же щелкая мышкой с соответствующей стороны
линейки. Для этой пели можно также применять клавиатуру. Так же, как и
для линейки прокрутки, ключевыми свойствами являются Мах, Min и Value,
что, соответственно, определяет максимальную, минимальную и текущую позицию
бегунка. Ключевое событие Scroll возникает всякий раз, когда пользователь
перемещает бегунок.
Управляющий элемент Status Bar (строка состояния)
Управляющий элемент Status
Bar представляет собой строку (обычно расположенную в нижней части формы),
в которой выводится текущее состояние приложения. (Например, текстовый
редактор Microsoft Word использует строку состояния для указания номера
текущей страницы, а также для информации о наличии режима вставки или замены,
и т.д.). Свойство Align указывает метод выравнивания для строки состояния.
Значения этого свойства такие же как и для управляющего элемента Progress
Bar. Каждая строка состояния может быть разделена максимум на 16 областей
(панелей). При создании строки состояния можно добавлять области, используя
страницу Panels.
При помощи диалоговой панели
можно добавить текст или картинку к любой области строки состояния. В процессе
работы при использовании метода Add обычно сначала объявляют переменную,
описывающую тип панели, а затем используют метод Add, синтаксис которого
представлен ниже:
Set PanelObject = NamedfStatusBar.Panels.Add{[index], [key], [text], [style], [picture])
где все параметры являются необязательными. (В
силу того, что этот метод не поддерживает именованные аргументы, необходимо
использовать кавычки для указания невключаемых элементов.) Параметр index
используется для нумерования области. Если этот параметр отсутствует, то
по умолчанию данный элемент будет добавлен в конец списка существующих
областей. (Так как можно использовать не более 16 областей, то значение
параметра index должно находиться в промежутке 1-16). Параметр Key (так
же, как и в любой коллекции) представляет собой еще один способ установить
ссылку на элемент. Параметр text задает текст для области. Параметр style
устанавливает метод вывода информации в строке состояния. Возможные значения
этого параметра собраны в следующей таблице.
|
|
|
(Используется по умолчанию.) Позволяет выводить произвольный текст или картинку. Выводимый текст определяется значением свойства text. Вывод картинки осуществляется при помощи метода Load Picture. |
|
Если клавиша CAPS LOOK была нажата, то слово CAPS выводится отчетливыми символами, в противном случае - слово выводится приглушенным серым цветом. |
|
То же самое, но для клавиши NumLock. |
|
То же самое, но для клавиши Insert. |
|
То же самое, но для клавиши ScrollLock. |
|
Служит для вывода текущего времени в текущем используемом системой формате. |
|
Служит для вывода текущей даты в текущем используемом системой формате. |
И наконец, необязательный параметр picture задает соответствующее растровое изображение. Например, следующий фрагмент кода:
Private Sub Form Load()
Dim MyPanel As Panel
StatusBar1.Panels(1).Text. = "Default panel exits already"
Set MyPanel = StatusBarl.Panels.Add(,,, sbrTime)
Set MyPanel = StatusBarl.Panels.Add(,,"Panel demo")
Set MyPanel = StatusBarl.Panels.Add(,,,, LoadPicture("C:\VB\ICONS\TRAFFIC\TRFFC01.ICO"))
End Sub
создает строку состояния.
Заметим, что приходиться использовать
переменные объекта для создания панели с соответствующими свойствами. Однако
можно заменить это двумя строками кода, первым шагом создав панель.
Например:
MyPanel
= StatusBarl.Panels.Add
MyPanel
== StatusBarl.Panels(2).Text = "Panel demo"
Еще одним свойством, связанным
со строкой состояния, является свойство AutoSize. Оно может принимать следующие
значения.
|
|
|
(Используется по умолчанию.) Запрещает автоматическую установку размера. |
|
При изменении размера родительской строки состояния автоматически высчитывается новый размер области. (Ширина области не может быть меньше, чем ширина, определяемая свойством MinWidth окна состояния). |
|
При наличии свободного места размер панели соответствует ширине, необходимой для помещения надписи. |
Управляющий элемент Tab Strip
Элемент Tab Strip является еще одним способом создания компонентов, внешний вид которых похож на элемент управления с закладками. Однако в силу того, что он не является контейнером, его использование лишено гибкости, присущей элементу управления с закладками. По этой причине данный элемент здесь не рассматривается.
Управляющий элемент Toolbar
Элемент Toolbar дает возможность
легко встраивать панели инструментов в приложения. Возможности данного
средства аналогичны по своему содержанию возможностям элемента Tool Tips
(данный элемент будет описан в одном из следующих разделов). Во-первых,
свойство Align задает месторасположение панели инструментов. По умолчанию
значение свойства Align равно 1 (Top), что помещает панель в верхнюю часть
формы.
Далее, если надо поместить
изображение на панель инструментов, то сначала необходимо сохранить его
в элементе Image List (это действие доступно как во время проектирования,
так и во время выполнения приложения). Следует учесть, что для назначения
изображений во время проектирования необходимо, чтобы элемент Image List
и панель инструментов были ассоциированы с одной и той же рабочей формой.
После сохранения изображений
в элементе Image List необходимо в качестве значения свойства Image List
использовать имя соответствующего элемента. Например, добавим панель инструментов
и управляющий элемент Image List на пустую рабочую форму, оставив установленные
по умолчанию имена. Теперь, если посмотреть на первую страницу из диалоговой
панели Property Pages панели инструментов, то можно увидеть, что выпадающий
список Image List показывает элемент Image List 1.
После того как установлено
соответствие для элемента Image List, можно назначить изображение из элемента
Image List любым кнопкам, используя страницу (Buttons) диалоговой панели.
Это можно сделать, установив нужный номер изображения из Image List в текстовой
панели Image. Например, в примере справа второй колонке назначается первое
изображение из элемента Image List.
Пример: работа с панелью инструментов в процессе
выполнения
Управляющий элемент Toolbar
содержит коллекцию из кнопок. Во время выполнения следует использовать
методы Add и Remove для добавления и удаления кнопок из панели. Естественно,
каждой кнопке соответствует свое событие Button Click, позволяющее производить
необходимые действия при нажатии пользователем на кнопку.
Обычно для использования метода
Add необходимо объявить переменную типа Button. Синтаксис метола Add может
быть записан следующим образом:
Set ButtonObject = NameOfToolBar.Button.Add ([index], [key], [caption], [style], [image])
где все параметры являются необязательными. (В
силу того, что этот метод не поддерживает именованные аргументы, необходимо
использовать кавычки для указания включаемых элементов.)
Параметр index указывает место
расположения кнопки в коллекции. Если этот параметр отсутствует, кнопка
автоматически помещается в конец списка. Параметр Key (так же, как и в
любой коллекции) представляет собой еще один способ создать ссылку на кнопку.
Параметр Caption служит для задания выводимого текста для объекта Button.
Свойство style задает способ вывода кнопки. Возможные значения этого свойства
представлены в следующей таблице.
|
|
|
(Используется по умолчанию.) Указывает на то, что кнопка является обычной нажимаемой кнопкой (push button). |
|
Кнопка является кнопкой проверки (check button). |
|
Кнопка принадлежит к группе. Это означает, что данная кнопка не может быть нажата до тех пор, пока нажата другая кнопка группы. В одно и то же время только одна кнопка из группы может находиться в нажатом состоянии. |
|
Кнопка представляет собой обычный разделитель, имеющий стандартную ширину в 8 пикселов. |
|
Кнопка представляет собой разделитель с переменной шириной |
И, наконец, параметр image
задает ключ или индекс для ассоциации с изображением, предварительно сохраненным
в элементе Image List.
Так же, как и в случае с объектом
Panel, можно сначала добавить кнопки, а затем описать их свойства. Например,
если надо на этапе проектирования добавить только одну кнопку с надписью
"First button", следует воспользоваться следующим фрагментом кода:
Tooibarl.Buttons.Add
Toolbarl.Buttons(2).Caption
= "Second button"
Tooibarl.Buttons.Add
Toolbarl.Buttons(3).Caption
= "Third button"
Ярлычки ToolTips
ToolTips представляют собой небольшие ярлычки, использующиеся для краткого описания инструмента. Такой ярлычок появляется примерно через 1 секунду после того, как указатель мыши помещается на инструмент, и пропадает после сдвига указателя мыши. Для добавления такой возможности в панель инструментов необходимо:
Управляющий элемент TreeView, судя по его названию, позволяет создавать дерево, похожее на используемое в Windows Explorer. Отдельные объекты, составляющие дерево, называются узлами (nodes), и, соответственно, управляющий элемент TreeView содержит коллекцию Nodes. Верхний узел указывается при помощи свойства Root. За дополнительной информацией об управляющем элементе TreeView мы отправляем читателя к справочной системе.