Работа с элементом управления CommonDialog - Окно диалога Save As
Для вызова окна диалодгa
Save As необходимо свойство CommonDialog1.Action установить в 2 или
применить метод ShowSave. Но, прежде необходимо назначить ряд свойств.
- Установить начальную директорию, которая будет открываться при вызове CommonDialog1 - а.
CommonDialog1.InitDir = "C:\My Documents"
Если не установить этого свойства, то по умолчанию будет открыватья директория, которую Вы
использовали в последний раз.
- Установить тип файлов, которые будут отображать диалог Save As. Для этого объявляем
строковую переменную strFileType и присваиваем ей необходимые значения.
Dim strFileType As String
strFileType = "All Files (*.*)|*.*|"
strFileType = strFileType & " Word Document ( *.doc )|*.doc|"
strFileType = strFileType & " Text Files (*.txt)|*.txt|"
Затем свойству Filter, CommonDialog1, присваиваем
значение переменной strFileType.
CommonDialog1.Filter = strFileType
Примечание. Не включайте пробелы до и после разделителей, иначе Вы получите
не те файлы, которые указали.
Устанавливаем фильтр по умолчанию, выбрав для него значение Word Document.
CommonDialog1.FilterIndex = 2
При открытии окна диалога Save As в текстовом окне "Save As ", у Вас отобразится
надпись Word Document (*.doc).
И наконец, отображаем окно диалога Save As.
CommonDialog1.Action = 2
или же
CommonDialog1.ShowSave
Естественно, раз Вы вызвали окно диалога Save As, то его надо использовать по
назначению, т.е. ввести в текстовое окно File Name имя файла для записи. При
этом введенное Вами имя файла присваивается свойству CommonDialog.FileName.
Зная имя файла Вы можете производить его запись соответствующими методами.
Теперь необходимо, как и при окне диалога Open уменьшить возможности
возникновения ошибок.
Для этого свойству Flags присваиваем необходимую константу.
- cdlOFNOverwritePrompt
- заставляет диалоговое окно Save As генерировать
блок сообщений, если выбранный файл уже существует, пользователь должен подтвердить, что
бы записать новый файл поверх старго.
На окне диалога Save As находится флажек для включения опции "Open as read only" .
Да, да это не опечатка и по этому добавим знакомую константу, которая уберет его с панели
окна диалога.
cdlOFNHideReadOnly - делает невидимым переключатель Read Only.
И теперь свойство Flags будет выглядеть следующим образом.
CommonDialog1.Flags = cdlOFNOverwritePrompt or cdlOFNHideReadOnly
Т.к. обычно окно диалога Save As используют с окном диалога Open,
то значить у Вас свойство CommonDialog1.CancelError уже установленно в True
и присутствует обработчик ошибок. Если этого нет, сделайте так, как описанно в окне
диалога Open.
Теперь скомпануем все выше описанное в упорядоченный код:
Private Sub mnuSaveAs_Click()
'Объявляем строковую переменную для назначения типов файлов
Dim strFileType As String
'Если возникнет ошибка, т.е.пользователь нажал на клавишу Cancel,
'отправится к обработчику ошибки - ErrorHandler
On Error GoTo ErrorHandler
'Обеспечиваем генерацию ошибки
CommonDialog1.CancelError = True
'Инициализируем переменную strFileName
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 = "C:\DOCUMENTS"
'Обеспечиваем защиту от неправильно введенного файла или директории,
а аткже скрываем флажек Read Only
CommonDialog1.Flags = cdlOFNOverwritePrompt or cdlOFNHideReadOnly
'Вызываем диалог Save As
CommonDialog1.Action = 2 'Или же CommonDialog1.ShowSave
Exit Sub
'Обработка перехватываемой ошибки
If Err.Number = 32755 Then
Exit Sub
End If
End Sub
Теперь диалог Save As полностью готов к работе.
|