Элемент управления commondialog
При работе программы возможно изменение свойств нашего 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 |
Вызывает справочную систему по ключевому слову |
26. История развития объектных моделей.
История развития насчитывает ряд этапов.
1.Разработчики Microsoft предложили создавать все свои приложения на основе компонентной модели (СОМ-Component Object Model–модель объектных компонент), независимую от языка программирования, на котором писался код компонента. Спецификация СОМ определяла «правилаповедения» для программного объекта в оперативной памяти компьютера и протокол взаимодействия объекта с окружающей программной средой. С появлением СОМ был заложен фундамент многократно используемых компонент, которые могли участвовать во многих проектах, не меняя своего кода.
2. Следующим этапом совершенствования объектной модели было появление на свет технологии OLE (Object Linkingand Embedding–связывание и внедрение объектов).
Она позволяла взаимодействовать с любыми программами, которые внедрялись в Ваше приложение в качестве объектов, например, WordArt, MPlayer и пр.
Посредством OLE можно было помещать в текстовый процессор (приложение-приемник, контейнер) изображение из графической программы (приложения-источника), и редактировать его, не покидая текстовый процессор. При внедрении объекта все данные копировались в контейнер. При связывании в контейнер записывалась только информация о приложении-источнике, из которого был взят вставляемый объект.
Приложения-приемники стали именоваться COM-клиентами, OLE-клиентами, контроллерами автоматизации, а приложения-источники–COM-серверами, серверами автоматизации.
Так, текстовый процессор, будучи еще и COM-сервером предоставлял другим приложениям доступ к документу, абзацу, закладке с помощью своих объектов. OLE-технология обладала еще и средством автоматизации (Automation), с помощью которого стало возможным устанавливать свойства, применять методы и обрабатывать события как внедренных в документ объектов, так и программно управлять объектами других приложений, находящихся на диске.
Иными словами, приложения MS Office стали программируемыми (управляемыми) с помощью внутреннего макроязыка Visual Basic for Applications (VBA), либо с помощью других внешних языков(приложенийVB, Delphi, VC).
ЯзыкVBA позволял создавать приложения непосредственно внутри документов Office. Управление же компонентами Office из других приложений стало возможным с помощью автоматизации.