На этом шаге мы рассмотрим способы сохранения документа.
Самый простой способ сохранения документа заключается в вызове метода Save объекта-документа, например: W.ActiveDocument.Save. Данный способ удобно использовать, если документ ассоциирован с файлом на диске. Когда мы попробуем сохранить с помощью этого метода вновь созданный документ, то откроется диалоговое окно Сохранение документа, активированное приложением Word.
Возьмем пример 1 из шага 47 и изменим его следующим образом:
Рис.1. Внешний вид приложения
Обработчик нажатия на кнопку Метод Save следующий:
procedure TForm1.Button5Click(Sender: TObject); //Метод Save begin W.ActiveDocument.Save; end;
Если мы закроем диалоговое окно Сохранение документа без сохранения документа, то получим ошибку. На рисунке 2 отображено диалоговое окно с сообщением об исключительной ситуации, возникшей в режиме отладки программы.
Рис.2. Отображение ошибки выполнения метода Save (режим отладки приложения)
В режиме выполнения откомпилированного приложения сообщение об этой ошибке будет выглядеть, как показано на рисунке 3.
Рис.3. Отображение ошибки выполнения метода Save (режим выполнения приложения)
Чтобы избежать появления ошибок выполнения, необходимо при выполнении процедур сохранения документа обрабатывать исключительные ситуации. Используйте конструкцию try ... except ... end среды Delphi. В случаях, когда не нужно выводить диалоговое окно сохранения документа, его можно подавить. Метод подавления диалоговых окон Word будет рассмотрен позже.
Эффективным способом избежать ошибок, возникающих при сохранении документов, может быть проверка "был документ сохранен или нет" и использование для сохранения метода SaveAs. Для проверки факта сохранения открытого документа на диск используйте свойство документа Saved - если оно имеет значение True, то документ был сохранен, если False - нет.
Рассмотрим следующий фрагмент программы.
procedure TForm1.Button6Click(Sender: TObject); //Проверка сохранения документа begin if W.ActiveDocument.Saved then MessageBox(0,'Документ сохранен!','Внимание!',MB_OK) else MessageBox(0,'Документ не сохранен!','Внимание!',MB_OK); end;
Результат выполнения - появление диалогового окна с фразой Документ сохранен или Документ не сохранен.
Текст этого приложения можно взять здесь (6,6 Кб).
Если вновь созданный документ не был сохранен, то для его записи на диск используется метод SaveAs. В спецификации языка Visual Basic (VB) он описан так:
ActiveDocument.SaveAs(FileName, FileFormat, LockComrnents, Password, AddToRecentFiles, WritePassword, ReadOnlyRecoramended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter)
Аргументы метода SaveAs определяют режимы и формат файла для сохраняемого документа. Используя их при вызове метода, можно добиться такого же результата, как и в режиме обычного пользователя приложения Word. Аргументы метода, их типы и назначение представлены в таблице 1.
Аргумент | Тип | Функциональное назначение |
---|---|---|
FileName | String | Путь и имя файла |
FileFormat | Число | Формат файла, см. таблицу 2 |
LockComments | Boolean | True - не сохранять комментарии |
Password | String | Пароль, который будет использоваться при открытии документа |
AddToRecentFiles | Boolean | True - добавить имя файла в список меню File |
WritePassword | String | Пароль, который будет использоваться для сохранения документа |
ReadOnlyRecommended | Boolean | True - в последующем документ можно открыть "только для чтения" |
EmbedTrueTypeFonts | Boolean | True - при сохранении перевести шрифты документа в TrueType |
SaveNativePictureFormat | Boolean | Используется для импорта графики из форматов, не поддерживаемых Windows. True - импортировать только графику, поддерживаемую Windows |
SaveFormsData | Boolean | True - сохранить форму документа без текста |
SaveAsAOCELetter | Boolean | Используется в версиях Word для компьютеров Apple Macintosh |
При вызове метода SaveAs можно задавать как один, так и несколько аргументов - количество определяется только необходимостью их использования в создаваемом приложении. Обычно достаточно первого аргумента (путь и имя файла).
При вызове метода SaveAs из приложений, созданных в Delphi, есть некоторые отличия синтаксиса от вызова в VB, но они не принципиальны.
Рассмотрим примеры синтаксиса вызовов метода SaveAs в Delphi.
Сохранение документа с указанием пути и имени файла:
Сохранение документа с указанием пути и имени файла, а также пароля:
Сохранение документа, ассоциированного с именем файла, с указанием пароля:
Для задания или изменения формата сохраняемого документа необходимо использовать числовой аргумент FileFormat, значения которого представлены в таблице 2.
Константа | Значение | Формат сохраняемого документа |
---|---|---|
WdFormatDocument | 0 | Документ Word (файл с расширением DOC) |
WdFormatDOSText | 4 | Текст DOS (файл с расширением ТХТ) |
WdFormatDOSTextLineBreaks | 5 | Текст DOS с разбиением на строки (файл с расширением ТХТ) |
WdFormatRTF | 6 | Текст в формате RTF (файл с расширением RTF) |
WdFormatTemplate | 1 | Шаблон Word (файл с расширением DOT) |
WdFormatText | 2 | Только текст (файл с расширением ТХТ) |
WdFormatTextLineBreaks | 3 | Текст с разбиением на строки (файл с расширением ТХТ) |
WdFormatUnicodeText | 7 | Кодированный текст (файл с расширением ТХТ) - текст в кодировке UNICODE |
Итак, мы открыли документ, считали из него текст, внесли в документ необходимые изменения и сохранили его. Теперь нужно закрыть его и закончить работу с приложением Word.
На следующем шаге мы рассмотрим закрытие документа и приложения.