On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Работа с элементом управления 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


Для вызова окна диалога 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.

 

Константы

Значения

Описание

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)



Литература по Microsoft Visual Basic