Робота з елементом управління CommonDialog

Мнацаканян А., Азбука Visual Basic

Частина # 1

Элемент
управления 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

Для вызова
окна
диалога 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 будет
генерироваться
ошибка 32755Cancel
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.

 

Константы

Значения

Описание

cdlOFNAllowMultiselect

&H200&

Определяет
поле
списка
имен
файлов,
позволяет
многократный
выбор.
Пользователь
может
выбрать
более чем
один файл.
Имена
выбранных
файлов
возвращаются
свойством FileName
строковой
переменной
и
разграничены
пробелами.
Примечание.
Не
поддерживается
длинные
имена
файлов (всего
8 букв)

cdlOFNCreatePrompt

&H2000&

Определяет,
что
диалоговое
окно
запрашивает
пользователя
о создании
файла,
который в
настоящее
время не
существует.
Этот флаг
автоматически
устанавливает
флаги cdlOFNFileMustExist и cdlOFNPathMustExist.

cdlOFNFileMustExist

&H1000&

Определяет,
что
пользователь
может
вводить
имена
только
существующих
файлов,
если флаг
установлен
и
пользователь
вводит
недопустимое
имя файла,
отображается
предупреждение.
Этот флаг
автоматически
устанавливает
флаг cdlOFNPathMustExist.

cdlOFNPathMustExist

&H800&

Определяет,
что
пользователь
может
вводить
только
допустимый
путь, если
флаг
установлен
и
пользователь
вводит
недопустимый
путь
отображается
сообщение.

cdlOFNExtensionDifferent

&H400&

Указывает,
что
расширение
возвращенного
файла (при
записи)
отлично от
расширения
определенного
в свойстве DefaultExt.
Флаг не
устанавливается,
если
свойство DefaultExt
равно Null
(пусто), если
расширения
соответствуют
друг другу
или если
файл не
имеет
никакого
расширения.
Значение
флага
может быть
проверенно
после
закрытия
диалогового
окна.

cdlOFNHideReadOnly   

&H4&

Делает
невидимым
переключатель
Read Only
.

cdlOFNNoReadOnlyReturn

&H8000&

Определяет,
что
возвращаемый
файл не
будет
иметь
атрибутов ReadOnly
и не будет
защищен от
записи.

cdlOFNReadOnly

&H1&

Заставляет
переключатель
Read Only
быть
отмеченным
при
открытии
окна
диалога.Флаг
так же
указывает
на
состояние
переключателя
Read
Only
,
когда
диалоговое
окно
закрыто.

cdlOFNNoChangeDir

&H8&

Вынуждает
диалоговое
окно
устанавливать
текущий
каталог в
тот,
который
был при
предыдущем
открытие.

cdlOFNNoValidate

&H100&

Определяет,что
диалоговое
окно
позволяет
недопустимые
символы в
возвращаемом
имени
файла.

cdlOFNOverwritePrompt

&H2&

Заставляет
диалоговое
окно Save
As
генерировать
блок
сообщений,
если
выбранный
файл уже
существует,
пользователь
должен
подтвердить,
что бы
записать
новый файл
поверх
старого.

cdlOFNShareAware

&H4000&

Определяет,
что
совместное
использование
ошибок
нарушения
будет
игнорироваться.

cdlOFNHelpButton

&H10&

Заставляет
диалоговое
окно
отображать
кнопку
Help.

cdlOFNExplorer

&H8000&

Опеределяет
вид
диалогового
окна
подобно Explorer
Windows95
.(Только
для Windows95)

cdlOFNNoDereferenceLinks

&H100000&

Делает
необратимые
иконки (вызов
связей). (Только
для Windows95)

cdOFNLongNames

&H200000&

Позволяет
пользователю
использовать
длинные
имена
файлов. (Только
для Windows95)

[Вперед]

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*