Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структурные особенности Visual Basic.docx
Скачиваний:
44
Добавлен:
17.11.2019
Размер:
2.86 Mб
Скачать

20. Основные свойства, методы и события объекта UserControl.

Модуль UserControl является базовым объектом для создания специализированных элементов управления, подобно объекту Form. Любой элемент управления, созданный с помощью Visual Basic, обязательно включает в свой состав UserControl. В пределах его визуального интерфейса могут размещаться интерфейсы других элементов, называемых в таком случае составляющими.

Разработчик обладает всей полнотой контроля над программным интерфейсом элемента управления и может добавлять в него по мере надобности дополнительные свойства, генерируемые события и методы. Проще всего это делается с помощью Мастера – надстройки Control Interface Wizard. Control Interface Wizard проводит пользователя через последовательность шагов, состоящих в добавлении тех или иных свойств, событий и методов, называемых собирательно членами класса. После того как сделан выбор по всем пунктам, мастер автоматически образует необходимые переменные уровня модуля, объявления событий и процедуры Property Let и Property Get для каждого свойства.У объекта UserControl (как Вы помните, это тот самый объект, на котором мы рисуем наш ActiveX-элемент) есть два специальных метода: WriteProperties и ReadProperties. Как ясно из их названия, они предназначены для записи и для чтения свойств. Спрашивается, куда и откуда? Ответ содержится в параметрах этим методов, а именно в методе WriteProperties свойства записываются в переменную PropBag типа PropertyBag , а в методе ReadProperties - свойства читаются из этого самого PropBag. Почему же их в этот самый PropBag надо записывать и потом читать? Зачем все эти сложности? Для ответа вспомним, что происходит с нашим ActiveX-элементом, сколько раз и когда он рождается и умирает.

Действия программиста

Что происходит с экземпляром ActiveX-элемента

Размещение ActiveX-элемента на форме (путём двойного щелчка на панели элементов).

1.Вызывается метод Initialize. 2.Вызывается метод InitProperties (в нем, как правило, устанавливаются стандартные начальные значения для ActiveX-элемента). 3.Создаётся экземпляр ActiveX-элемента времени разработки.

Установка программистом своих значений свойств для ActiveX-элемента

Для созданного на предыдущем шаге экземпляра ActiveX-элемента изменяются свойства.

Запуск программы в среде Visual Basic'а.

1.Вызывается метод WriteProperties, который запишет новые свойства ActiveX-элемента, заданные программистом на предыдущем этапе, в объект PropBag типа PropertyBag. 2.Старый экземпляр ActiveX-элемента (тот, который был создан на этапе разработки нашим программистом) умирает.

Запущенная программа появляется на экране.

1.Создается новый экземпляр ActiveX-элемента. 2.Вызывается метод Initialize для нового экземпляра ActiveX'а. 3.Новый экземпляр ActiveX-элемента берёт свои свойства из объекта PropBag типа PropertyBag (таким образом этот новый экземпляр получает именно те значения свойств, которые были заданы программистом) путем вызова метода ReadProperties.

При работе программы возможно изменение свойств нашего ActiveX-элемента в результате действий пользователя или самой программы.

Свойства ActiveX-элемента изменяются на какие-то другие.

Закрытие программы.

Экземпляр, созданный на этапе запуска программы, уничтожается. Новые значения свойств никуда не сохраняются .

Возврат к этапу разработки программы.

1.Вызывается метод Initialize для нового экземпляра ActiveX'а. 2.Путем вызова метода ReadProperties новый экземпляр ActiveX-элемента берёт свои свойства из объекта PropBag типа PropertyBag (таким образом этот новый экземпляр получает именно те значения свойств, которые были заданы на этапе разработки программистом).

21-25.Элемент управления CommonDialog для создания диалоговых окон

Все диалоговые окна, перечисленные в начале раздела "Диалоговые окна", можно создать с помощью элемента управления commonDialog. Прежде чем его использовать, необходимо подключить к проекту библиотеку Microsoft Common Dialog Control 6.0 через диалоговое окно Components (Компоненты) среды проектирования.

Для вызова диалоговых окон необходимо использовать соответствующие каждому из этих окон методы элемента управления commonDialog, указанные в табл. 7.11.

Таблица 7.11. Методы элемента управления CommonDialoq

Метод

Описание

ShowOpen

Вызывает диалоговое окно, используемое для открытия файла

ShowSave

Вызывает диалоговое окно, используемое для сохранения файла

ShowColor

Вызывает диалоговое окно настройки цветовой палитры

ShowFont

Вызывает диалоговое окно настройки шрифтов текста

ShowPrinter

Вызывает диалоговое окно настройки печати и диалоговое окно печати

ShowHelp

Подключает справочную систему в стиле Windows

Для изучения диалоговых окон, образуемых с помощью элемента управления CommonDialog, создадим небольшой проект. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый) и в открывшемся диалоговом окне дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MySmallProject. Для этого откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда примет вид MySmallProject Properties (Свойства MySmallProject).

3. Подключите к проекту библиотеку Microsoft Common Dialog Control 6.0. Для этого в меню Project (Проект) выберите команду Components, в открывшемся диалоговом окне Components (Компоненты) установите флажок, расположенный рядом с названием этой библиотеки, и нажмите кнопку ОК.

4. Задайте наименование формы проекта FormForControlCommDiaiog.

5. Используя свойство caption формы, введите заголовок окна Форма для проверки диалогов CommonDialog.

6. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку CommonDialog на панели элементов управления. Если эта панель отсутствует на экране, то в меню View (Вид) выберите команду TooIBox (Панель инструментов).

7. Присвойте элементу управления CommonDialog наименование cdMyDialog.

8. Добавьте в форму кнопку управления типа commandButton и назовите ее cbControl. Эта кнопка будет использоваться нами для вызова диалогового окна по событию click.

9. Используя свойство caption, введите название кнопки Проверка диалогов CommonDialog.

Полученное приложение представлено на рис. 7.21. Этот проект, содержащий элемент управления commonDialog, будем использовать для создания диалоговых окон и знакомства с ними, размещая в событии click кнопки cbControl код настройки параметров требуемого диалогового окна и вызова соответствующего ему метода.

Диалоговое окно открытия файла

Диалоговое окно открытия файла предназначено для поиска файлов, используемых в программе. Имя выбранного файла или списка файлов возвращается в свойстве FileName объекта CommonDialog. Для вызова диалогового окна открытия файла (рис. 7.22) необходимо в событии click кнопки cbControl приложения MySmallProject ввести следующий код:

Private Sub cbControl_Click()

cdlMyDialog.ShowOpen

End Sub

Для ввода кода достаточно дважды щелкнуть на объекте cbcontroi левой кнопкой мыши. При этом открывается редактор кода с шаблоном кода для события click этой кнопки.

Значения для свойства cdlMyDialog. Flags указаны в табл. 7.12.

Таблица 7.12. Значения для метода Flags диалогового окна открытия файла

Константа

Значение

Описание

cdlOFNAllowMultiselect

&H200

Устанавливает возможность множественного выбора файлов в диалоговом окне. Возвращаемые имена файлов находятся в свойстве FileName элемента управления CornmonDialog и разделены пробелами

cdlOFNCreatePrompt

&H2000

Устанавливает для диалогового окна запрос на подтверждение создания нового файла, если он не существует

cdlOFNExplorer

&H80000

Назначает диалоговому окну стиль проводника

cdlOFNExtensionDifferent

&H400

Сообщает, что расширение файла отличается от установленного по умолчанию в свойстве DefaultExt

cdlOFNFileMustExist

&H1000

Устанавливает возможность ввода в диалоговом окне только имен существующих файлов. При вводе несуществующего файла выдается сообщение об ошибке

cdlOFNHelpButton

&H10

Указывает на необходимость размещения в диалоговом окне кнопки Справка

cdlOFNHideReadOnly

&H4

Файлы только для чтения не отображаются

cdlOFNLongNames

&H200000

Разрешает использование длинных имен файлов

cdlOFNNoChangeDi r

&H8

" Назначает папку, открываемую по умолчанию при запуске диалогового окна

cdlOFNNoLongNames

&H40000

Запрещает использование длинных имен файлов

cdlOFNNoReadOniyReturn

&H8000

Указывает, что выводимые в диалоговом окне файлы не должны быть предназначены только для чтения и не находятся в каталоге, защищенном от записи (Write-protected)

cdlOFNNoValidate

&H100

Сообщает о вводе недопустимых символов в имени файла

cdlOFNOverwritePrompt

&H2

Устанавливает для диалогового окна запрос на подтверждение перезаписи существующего файла

cdlOFNPathMustExist

&H800

Устанавливает требование указания полного пути к файлу

cdlOFNReadOnly CdlOFNShareAware

&H1 &H4000

Задает проверку флажка Только чтение

Задает игнорирование ошибки типа блокировки, занятости файла (Sharing violation errors)

Диалоговое окно сохранения файла

Для поиска файла, в котором будут сохранены данные из программы, используется диалоговое окно сохранения файла (рис. 7.23). Это диалоговое окно вызывается так же, как окно открытия файла. Для его создания в событии click кнопки cbControl приложения MySmallProject необходимо заменить код на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowSave

End Sub

Как видно из рисунка, это диалоговое окно аналогично окну, предназначенному для открытия файла. Флаги этого диалогового окна перечислены в табл. 7.12.

Диалоговое окно настройки цветовой палитры

Для настройки цвета фона формы и расположенных в форме элементов можно использовать диалоговое окно настройки цветовой палитры (рис. 7.24). Для вызова этого диалогового окна необходимо заменить код в событии click кнопки cbcontrol приложения MySmallProject на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowColor

End Sub

Константы, используемые для настройки диалогового окна выбора цветовой палитры, перечислены в табл. 7.13. Расширенное диалоговое окно настройки цветовой палитры можно создать с помощью объекта CommonDialog (рис. 7.25).

Таблица 7.13. Значения для метода Flags диалогового окна цветовой палитры

Константа

Значение

Описание

cdlCCFullOpen

&H2

Помещает в диалоговое окно дополнительную кнопку Добавить в набор и цветовое поле с маркером и линейкой назначения оттенка для добавления цветов в поля Дополнительные цвета диалогового окна цветовой палитры (рис. 7.25)

cdlCCShowHelp

&H8

Добавляет в диалоговое окно кнопку Справка

cdlCCPreventFullOpen

&H4

Скрывает кнопку Добавить в набор

cdlCCRGBInit

&H1

Восстанавливает в диалоговом окне исходный набор цветов

Диалоговое окно настройки шрифтов текста

Для вызова диалогового окна настройки шрифтов (рис. 7.26) необходимо в событие click кнопки cbcontrol ввести следующий код:

Private Sub cbControl_Click()

cdlMyDialog.Flags = cdlCFBoth + cdlCFEffects

cdlMyDialog.ShowFont

End Sub

Флаги диалогового окна настройки шрифтов перечислены в табл. 7.14.

Таблица 7.14. Значения для метода Flags диалогового окна настройки шрифтов

Константа

Значение

Описание

cdlCFANSIOnly

&H400

Назначает выбор только из системных наборов шрифтов Windows

cdlCFApply

&H200

Добавляет в диалоговое окно кнопку Применить

cdlCFBoth

&H3

Назначает использование экранных шрифтов принтера, указанного в свойстве hDC

CdlCFEffects

&H100

Указывает на необходимость размещения в диалоговом окне элементов управления, задающих эффект подчеркивания, зачеркивания и цвета

cdlCFForceFontExis

it &H10000

Назначает вывод предупреждения об ошибке при выборе несуществующего шрифта

cdlCFHelpButton

&H4

Добавляет в диалоговое окно кнопку Справка

cdlCFLimitSize

&H2000

Назначает выбор размеров шрифтов в интервале, указанном в свойствах Min и Мах

cdlCFNoFaceSel

&H80000

Отключает выбор наименования шрифта

cdlCFNoSizeSel

&H1000

Отключает выбор размера шрифта

cdlCFNoSimulations

&H200000

Отключает в диалоговом окне графические шрифты

cdlCFNoStyleSel

&H100000

Отключает выбор стиля шрифта

cdlCFNoVectorFonts

&H800

Отключает выбор векторных шрифтов

cdlCFPrinterFonts

&H2

Назначает выбор только шрифтов принтера, который указан в свойстве hDC

cdlCFScreenFonts

&H1

Назначает выбор только экранных шрифтов системы

cdlCFTTOnly

&H40000

Назначает только выбор шрифтов типа True Type

CdlCFWYSIWYG

&H8000

Назначает выбор только тех шрифтов, которые подходят одновременно и для принтера, и для экрана. При этом должны дополнительно использоваться флаги cdlCFBoth и cdlCFScalableOnly

Диалоговое окно печати

Диалоговое окно печати можно вызвать с помощью элемента управления

commonDialog, заменив код в событии click кнопки с наименованием cbControl на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowPrinter

End Sub

Открытое диалоговое окно показано на рис. 7.27.

Если требуется предварительно настраивать печать, то необходимо установить для свойства Flags значение cdlPDPrintSetup. В этом случае код будет выглядеть следующим образом:

Private Sub cbControl_Click()

cdlMyDialog.Flags = cdlPDPrintSetup

cdlMyDialog.ShowPrinter

End Sub

Запустив приложение MySmallProject, вы получите диалоговое окно

Таблица 7.15. Значения для метода Flags диалогового окна печати

Константа

Значение

Описание

cdlPDAllPages

&НО

Возвращает или устанавливает состояние переключателя печати всех страниц

cdlPDDisablePrintToFile

&H80000

Делает недоступным флажок диалогового окна Печать в файл

cdlPDHelpButton

&H800

Добавляет в диалоговое окно кнопку Справка

cdlPDHidePrintToFile

&H100000

Скрывает флажок диалогового окна Печать в файл

cdlPDNoPageNums

&H8

Скрывает элементы управления в группе Печатать

cdlPDNoWarning

&H80

Отменяет предупреждение об отсутствии принтера по умолчанию

cdlPDPageNums

&H2

Делает недоступными элементы управления, расположенные в области Печатать

cdlPDPrintSetup

&H40

Выводит диалоговое окно настройки печати перед диалогом печати

cdlPDPrintToFile

&H20

Возвращает или устанавливает состояние флажка Печать в файл

cdlPDReturnDefault

&H400

Возвращает имя принтера, используемое по умолчанию

cdlPDUseDevModeCopies

&H40000

Если драйвер принтера не поддерживает создание копий, делает недоступным счетчик Число копий. Если копирование поддерживается, указывает, что номер копии хранится в свойстве Copies

Справочная система в стиле Windows

Флаги диалогового окна справочной системы перечислены в табл. 7.16. Для использования этого диалогового окна необходимо создать справочную систему для приложения (файл справки).

Таблица 7.16. Значения для метода Flags диалогового окна справочной системы

Константа

Значение

Описание

cdlHelpCommandHelp

&Н102

Вызывает справочную систему отдельной командой

cdlHeIpContents

&НЗ

Вызывает содержание справочной системы

cdlHelpContext

&H1

Вызывает отдельную тему справочной системы

cdlHelpContextPopup

&H8

Вызывает тему справки по индексу

cdlHelpIndex

&H3

Вызывает указатель справочной системы

cdlHelpKey

&H101

Вызывает справочную систему по ключевому слову