Работа с элементом управления CommonDialog
Элемент управления
CommonDialog позволяет
разработчикам
приложений
максимально
приблизить
разработку
интерфейса своей
программы к
стилю применяемого
в Windows. Так, как мне часто
приходилось
сталкиваться
с проблемой
связанной с
применением
и работой элемента
управления
CommonDialog и
в последнее
время получал
ряд писем с вопросами
о его применении,
то решил поделиться
со всеми тем,
что знаю. Применение
каждого окна
диалога постараюсь
дать отдельными
обзорами. Прежде чем начать
работу выберите
в меню Project
| Components
управляющий
элемент Microsoft Common
Dialog Control 6.0 . В панели
инструментов
у вас появится
иконка эл. управления
CommonDialog . Разместив на
своей форме
эл. управления
CommonDialog,
Вы
получаете возможность
вызова таких
окон, как:
1.Окно диалога
Open;
2.Окно
диалога Save As;
3.Окно диалога
Color;
4.Окно диалога
Font;
5.Окно
диалога Print;
6.Запуск WinHelp32.exe; Выбор того или
иного типа окна
диалога происходит
посредством
установки свойства
Action
в соответствующее
значение или
же применением
соответствующего
метода.
Для вызова окна
диалога Open неоходимо
свойство CommonDialog1.Action
установить
в 1 или же применить
метод ShowOpen. Но, прежде
чем перед Вами
появится полноценное
Windows-кое
окно Open,
необходимо
назначить ряд
свойств. 1.Установить
начальную директорию,
которая будет
открываться
при вызове CommonDialog1-а. CommonDialog1.InitDir
= "C:\My Documents" Если не установливать
этого свойства,
то по умолчанию
будет открываться
директория,
которую Вы использовали
последний раз. 2.Установить
тип файлов, которые
будет отображать
диалог Open.
Для этого объявляем
строковую переменную
strFileType и присваиваем
ей необходимые
значения. Dim
strFileType As String strFileType = "All
Files (*.*)|*.*|" strFileType = StrFileType
& " Word Documents ( *.doc )|*.doc |" strFileType = StrFileType
& " Text Files (*.txt)|*.txt|" Затем свойству
Filter,
CommonDialog,
присваиваем
значение переменной
strFileType. CommonDialog1.Filter
= strFileType Примечание.
Не включайте
пробелы до и
после разделителей,
иначе Вы получите
не те файлы, которые
указали. Устанавливаем
фильтр по умолчанию,
выбрав для этого
значение Word
Documents. CommonDialog1.FilterIndex
= 2 При открытии
окна диалога
Open в текстовом
окне "Files
of
type",
у Вас отобразится
надпись Word Documents ( *.doc
). 3. И наконец, отображаем
окно диалога
Open. CommonDialog1.Action
= 1 или
же CommonDialog1.ShowOpen Естественно,
раз Вы вызвали
окно диалога
Open,
то его надо использовать
по назначению,
т.е. выбрать необходимый
файл и открыть
его. Выбор файла
производится
так, как и в Windows – e, но для
продолжения
работы необходимо
передать в программу
путь и имя выбранного
Вами файла. Для
этой цели существуют
два свойства
CommonDialog1
– а : CommonDialog1.FileTitle
–
возвращает
имя выбранного
файла с раширением
(например. "Hello.doc"); CommonDialog1.FileName
– возвращает
путь к выбранному
файлу (например.
"C:\My Documents\Hello.doc"); Зная эти данные
Вы можете производить
соответствующие
операции над
выбранными
файлами. Теперь необходимо
оградить программу
от непредусмотренных
действий пользователя. Что может сделать
пользователь
? 1.Ввести несуществующий
файл или какие
либо символы
и нажать на клавишу
Open; 2.Не выбрав ни
одного файла
нажать на клавишу
Open; Для предупреждения
подобных действий
свойству Flags
присваиваем
необходимую
константу. cdlOFNFileMustExist - Определяет,
что пользователь
может вводить
имена только
существующих
файлов, если
флаг установлен
и пользователь
вводит недопустимое
имя файла, отображается
предупреждение.
Этот флаг автоматически
устанавливает
флаг cdlOFNPathMustExist. Внимание.
На окне диалога
Open
находится флажек
для включения
опции "Open
as
read
only"
. Рассматривать
работу с этим
флажком мы не
будем, по этому
добавим еще
одну константу,
которая уберет
его с панели
окна диалога. cdlOFNHideReadOnly
- Делает
невидимым переключатель
Read Only. И теперь
свойство Flags
будет выглядеть
следующим образом. CommonDialog1.Flags = CdlOFNFileMustExist or CdlOFNHideReadOnly 3.Не выбрав ни
одного файла
нажать на клавишу
Cancel; 4.Выбрать файл
и нажать на клавишу
Cancel; Что бы предотвратить
появления ошибки,
при этих действиях
пользователя,
дополняем вышеприведенный
код обработчиком
ошибки. Необходимо
заметить, что
ошибку должно
генерировать
само окно диалога,
для этого, свойство
CommonDialog1.CancelError
установите
в True.
Тепрь при нажатии
на клавишу Cancel будет
генерироваться
ошибка 32755 – Cancel
was
selected
(Выбрана
Отмена). CommonDialog1.CancelError
= True Теперь скомпануем
все вышеописанное
в упорядоченный
код: Private
Sub mnuOpen_Click() 'Объявляем
строковую переменную
для назначения
типов ф Dim
strFileType As String 'Если возникнет
ошибка, т.е пользователь
нажел на клавишу
Cancel, ‘отправиться
к обработчику
ошибки - ErrorHandler On
Error GoTo
ErrorHandler 'Обеспечиваем
генерацию ощибки CommonDialog1.CancelError
= True 'Инициализируем
строковую переменную
strFileType strFileType = "All
Files (*.*)|*.*|" strFileType = StrFileType
& " Word Documents ( *.doc )| *.doc |" strFileType = StrFileType
& " Text Files (*.txt)|*.txt|" 'Присваиваем
ее свойству
Filter CommonDialog1.Filter
= strFileType 'Устанавливаем
необходимый
индекс CommonDialog1.FilterIndex
= 2 'Присваиваем
начальную директорию
своству InitDir CommonDialog1.InitDir
= "D:\DOCUMENTS" 'Обеспечиваем
защиту от неправильного
введенного
файла или дериктории,
а так же скрываем
флажек Read Only CommonDialog1.Flags
= cdlOFNFileMustExist or cdlOFNHideReadOnly
'Вызываем
диалог Open CommonDialog1.Action
= 1 'Или
же CommonDialog1.ShowOpen '*********** 'Здесь
распологается
Ваш код.(не забудте,
что путь к выбранному
файлу Вы считываете
из свойства
FileName) '********** Exit
Sub 'Обработка
перехватываемой
ощибки ErrorHandler: If
Err.Number = 32755 Then
Exit
Sub End
If End
Sub Теперь диалог
Open
полностью готов
к работе. Если Вы желаете
поэксперементировать
с окном диалога
Open,
то ниже приводятся
константы, котрые
можно присваивать
свойству Flags.
|