Работа с элементом управления 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 в соответствующее значение или же применением соответствующего метода.
Работа с элементом управления CommonDialog - Окно диалога 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.
|