Метка (Label), текстовое окно (Text box), окно редактирования с маской (MaskedEdit), контрольный индикатор (Check box), Изображение (Image) и графическое окно (Picture box)
Объекты управления Label и Text Box используются для вывода текстовой информации на экранную форму. При работе с базами данных эти элементы управления могут применяться и для отображения на экране текстовой информации из полей базы данных. На панели инструментов Visual Basic метка и текстовое окно изображены пиктограммами и соответственно. Чтобы установить связь с объектом управления данными необходимо определить их свойства DataSource и DataField соответствующим образом.
Метка (Label) может быть как однострочной, так и многострочной, но в отличие от текстового окна в ней не предусмотрены возможности редактирования и прокрутки данных. Если выводимый текст не помещается в отведенное для метки место на форме, то текст обрезается. Управлять этим поведением можно при помощи свойств AutoSize и WordWrap. Свойство AutoSize определяет поведение размеров метки при изменении длины выводимого текста и по умолчанию устанавливается в False, при этом размер метки не увеличивается с ростом длины строки. При установленном в True свойством AutoSize с помощью установок свойства WordWrap определяется поведение вертикального размера метки. Если WordWrap установлен в False, то при увеличении длины строки переносов слов не будет и горизонтальный размер метки будет увеличиваться до тех пор, пока текст не достигнет правого края экранной формы. Если WordWrap установлен в True, то по мере достижения правой границы метки будет осуществляться перенос слов. Такое поведение меток продемонстрировано на рис.7.1.
Рис.7.1. Управление поведением размеров метки при выводе текста с помощью свойств AutoSize и WordWrap
Следует помнить, что для сохранения заданного размера метки по горизонтали необходимо установить свойство WordWrap в True до установки свойства AutoSize. В противном случае, этот размер сразу уменьшится до значения, определяемого длиной строки в свойстве Caption.
Для отображения текстовой информации из базы данных все-таки гораздо больше подходит текстовое окно. Связь с объектом управления данными осуществляется установкой свойств DataSource и DataField.
Как и метка, элемент управления - текстовое окно (TextBox) может быть однострочным или многострочным. Это определяется установкой свойства MultiLine, которое по умолчанию устанавливается в False. Если вы хотите использовать многострочное текстовое окно с возможностью прокрутки данных, то после определения его размеров и месторасположения на экранной форме установите свойство MultiLine в True и, если требуется, свойство ScrollBars (рис 7.2).
Рис.7.2. Однострочное и многострочное текстовые окна
Если вам требуется выводить текст не подлежащий редактированию пользователем, установите, например, свойство Locked в True.
Таким образом, метки все-таки удобнее используются для информирования пользователя о том, какого рода данные отображаются в текстовом окне, которое, как правило, располагается рядом. В этом случае метка не связывается с базой данных. Примеры такого использования меток и текстовых окон обсуждались в предыдущей главе.
Связанный с данными контрольный индикатор (Check box) можно использовать для наглядного представления на экранной форме информации из полей базы данных логического типа (Да или Нет, 1 или 0, True или False). Примерами таких данных могут служить: оплачен или не оплачен счет - при разработке системы управления счетами, есть товар на складе или нет - при автоматизации складского хозяйства, постоянный покупатель или нет - в системе работы с покупателями (рис7.3) и т.п. На панели инструментов Visual Basic контрольный индикатор обозначен пиктограммой . Связь контрольного индикатора с объектом управления данными осуществляется установкой свойств DataSource и DataField.
Рис.7.3. Пример использования контрольного индикатора
Известно, что пользователи часто совершают ошибки при вводе информации в базы данных. Впрочем, не ошибается лишь тот, кто ничего не делает. Установить некоторый контроль над действием пользователей позволяет использование для ввода специальной информации окна редактирования с маской (MaskedEdit) Этот элемент управления позволяет так же помещать в поле ввода символы разметки. Примером такой информации может выступать номер телефона или почтовый индекс. Типичный номер телефона имеет следующий формат, где скобки и дефисы являются символами разметки, а символ # определяет любую цифру:
(###)###-##-##
Почтовый индекс состоит из шести цифр и не должен содержать букв или других символов.
Окно редактирования с маской имеет свойство Mask (Маска), которое позволяет определить формат отображаемой строки в поле ввода. По умолчанию свойство Mask не определено и поведение объекта Mask полностью аналогично обычному текстовому окну. Символы, которые используются в качестве маски приведены в таблице.
Таблица. Символы, используемые в качестве маски
Символ |
Описание |
# |
Любая цифра |
. |
Десятичная точка (например, 3.1415) |
, |
Разделитель тысяч (например, 1,000,000) |
: |
Разделитель времени (например, 21:30) |
/ |
Разделитель даты (например, 05/08/97) |
& |
Любой символ |
A |
Любая цифра или буква |
? |
Любая буква |
С полем базы данных объект MaskedEdit связывается установкой свойств DataSource и DataField.
Построим простое приложение в котором будут реализованы возможности рассмотренных в этом разделе связанных элементов управления. Создадим, например, при помощи приложений VisData или MS Access базу данных CUSTOMER.MDB с одной таблицей CUSTOMERS, в которой будем хранить информацию о покупателях. Пусть эта таблица будет содержать следующие поля:
Таблица. Структура таблицы CUSTOMERS базы данных CUSTOMER.MDB
Поле |
Тип |
Ширина |
Описание |
Name | Text | 20 | Имя |
LastName | Text | 20 | Фамилия |
Concern | Text | 50 | Предприятие |
Const | Boolean | 1 | Постоянный покупатель или нет |
Address | Text | 50 | Адрес предприятия |
Phone | Text | 20 | Телефон |
Note | Text | 50 | Примечание |
Так как наше приложение будет простой программой просмотра содержимого базы данных, то самостоятельно добавьте в таблицу CUSTOMERS несколько произвольных записей.
Создайте новый проект и расположите на форме объект управления данными, семь меток, пять текстовых окон, окно редактирования с маской и один контрольный индикатор, как показано на рис.7.4.
Рис.7.4. Расположение элементов управления на экранной форме
Теперь в окне свойств объекта Data1 определите свойство Caption, как “Покупатели”, установите свойство DatabaseName как имя файла базы данных с указанием полного пути C:\WORK\ CUSTOMER.MDB и укажите имя таблицы Customers в качестве источника данных RecordSource.
Затем установите свойства меток, текстовых окон, окна редактирования с маской и контрольного индикатора следующим образом:
Label1.Caption=Имя
Label2.Caption=Фамилия
Label3.Caption=Предпреятие
Label4.Caption=Адрес
Label5.Caption=Телефон
Label6.Caption=Примечание
Text1.DataSource=Data1
Text1.DataField=Name
Text2.DataSource=Data1
Text2.DataField=LastName
Text3.DataSource=Data1
Text3.DataField=Concern
Text4.DataSource=Data1
Text4.DataField=Address
Text5.DataSource=Data1
Text5.DataField=Note
MaskedEdit1.DataSource=Data1
MaskedEdit1.DataField=Phone
MaskedEdit1.Mask=(###)###-##-##
Check1.Caption=Постоянный покупатель
Check1.DataSource=Data1
Check1.DataField=Const
Метку Label7 будем использовать аналогично текстовому окну, в котором отображается содержимое поля Note (Примечание). Для этого установите следующие свойства:
Label6.DataSource=Data1
Label6.DataField=Note
Теперь сохраните и запустите проект. Результат работы приложения показан на рис.7.5.
Рис.7.5. Результат работы приложения
Для отображения на форме графических объектов в формате Windows (битовые карты - файлы с расширением BMP, иконы - ICO и метафайлы - WMF), а также рисунков в форматах GIF и JPG можно использовать элементы управления Image (Изображение) и Picture Box (Графическое окно). Связываются эти объекты управления с базой данных установкой все тех же свойств DataSource и DataField и на панели инструментов Visual Basic обозначены пиктограммами и соответственно.
Хотя эти элементы управления и служат одной цели, тем не менее, они отличаются эти друг от друга способом отображения графики. Свойство Stretch (Растяжение) объекта Image по умолчанию устанавливается в False и линейные размеры объекта “Изображение” будут изменяться в соответствии с действительными размерами рисунка. Если Stretch равно True, то рисунок при выводе его на форму будет сжиматься или растягиваться согласно взаимному соотношению размеров рисунка и линейным размерам объекта “Изображение”. В этом случае, если длина и ширина объекта и самого рисунка не пропорциональны друг другу то, то что вы увидите на экране может заметно отличаться от оригинала. Картинка может заметно исказиться (рис.7.6). Таким образом, при использовании объекта Image для вывода графики в любом случае, независимо от установки свойства Stretch, вся картинка разместится на экранной форме.
Рис.7.6. Влияние установки свойства Stretch на вывод изображения
Использование для представления графики объекта “Графическое окно” позволяет выводить рисунки без искажений. При установке свойства AutoSize объекта Picture в False, а именно так оно определяется по умолчанию, размеры объекта не будут приводиться в соответствие с размерами картинки. Если в этом случае картинка не поместится целиком в графическое окно, то она будет обрезана (рис.7.7). С другой стороны, если AutoSize равен True, то при выводе картинки на экран размеры графического окна изменятся согласно размерам выводимого изображения.
Рис.7.7. Влияние установки свойства AutoSize на вывод изображения
Использование элементов управления Image и Picture Box не позволяют проводить редактирование изображений. Если в вашем приложении необходимо вносить изменения в графические изображения, то лучше воспользоваться контейнером OLE.