![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Документ Word не удаляется. [D7, XP]
KiLLiR © (2009-06-20 15:19:00)Приветствую всех мастеров и начинающих.
Прошу помочь с проблемкой...
Следующий модуль должен:
1)Скопировать исходный файл.
2)В копии произвести изменения (на места закладок в документе вставить значения из таблицы в базе данных).
3)Распечатать копию.
4)Удалить копию.
procedure TMain.PechatBitBtnClick(Sender: TObject);
var
WordApp, BookmarkName, Doc, R: OleVariant;
WordDocument: String;
begin
CopyFile(PChar(GetCurrentDir+'/Shablonii/Blank_zayavki.doc'), PChar(GetCurrentDir+'/Shablonii/Blank_zayavki1.doc'), True);
WordDocument:=GetCurrentDir+'/Shablonii/Blank_zayavki1.doc';
try
WordApp := CreateOleObject('Word.Application');
except
Application.MessageBox('Не удалось запустить приложение Microsoft Word! Проверьте наличие приложения в системе!', 'Ошибка другого приложения!', MB_ICONERROR)
end;
WordApp.Documents.Open(WordDocument);
Doc := WordApp.ActiveDocument;
BookmarkName := 'zayavka_num';
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues['Kod']);
R.Font.Color := clBlack;
end;
BookmarkName := 'zayavka_datetime';
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues['Data_vizova']+' '+Main.Zayavki.FieldValues['Vremya_vizova']);
R.Font.Color := clBlack;
end;
BookmarkName := 'adres';
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter('óë.'+Main.Zayavki.FieldValues['Ulitsa']+' ä.'+Main.Zayavki.FieldValues['Dom']+' êâ.'+IntToStr(Main.Zayavki.FieldValues['Kvartira']));
R.Font.Color := clBlack;
end;
BookmarkName := 'fio';
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues['Familiya']+' '+Main.Zayavki.FieldValues['Imya']+' '+Main.Zayavki.FieldValues['Otchestvo']);
R.Font.Color := clBlack;
end;
BookmarkName := 'zhalobi';
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues['Zhalobi']);
R.Font.Color := clBlack;
end;
Doc.PrintOut;
if not VarIsEmpty(WordApp) then
begin
WordApp.DisplayAlerts:=0;
WordApp.Documents.Item(1).Save;
WordApp.Quit;
BookmarkName:=Unassigned;
R:=Unassigned;
WordApp:=Unassigned;
end;
DeleteFile(GetCurrentDir+'/Shablonii/Blank_zayavki1.doc');
end;
Самый 1-ый запуск прошел как надо, все распечаталось, а вот при каждой последующей распечатке документ 'Blank_zayavki1.doc' не затирается, а на месте закладок происходит накопление строки и вместе с тем, что мне надо распечатываются все прошлые данные - они идут один за другим.
Т.е. похоже на то, что DeletFile вообще не работает. Файл как был, так и остается на месте.
Может есть какие то другие методы удаления файлов?
Andy BitOff (2009-06-20 20:13:00) [1]Ты же используешь OLE объест, по нему нет справки в Дельфи, да и быть не может. Запусти Ворд, нажми Alt+F11, а там уже хелп.
KiLLiR (2009-06-20 20:07:00) [2]Andy BitOff спасибо!
WordApp.Documents.Item(1).Save;
заменил на:
WordApp.Documents.Close(wdDoNotSaveChanges, wdWordDocument);
и все пошло как надо. )))
Andy BitOff (2009-06-20 19:17:00) [3]
Word Developer Reference
Documents.Close Method
Closes the specified documents.
Syntax
expression.Close(SaveChanges, OriginalFormat, RouteDocument)
expression Required. A variable that represents a Documents collection.
Parameters
Name Required/Optional Data Type Description
SaveChanges Optional Variant Specifies the save action for the document. Can be one of the following WdSaveOptions constants: wdDoNotSaveChanges, wdPromptToSaveChanges, or wdSaveChanges.
OriginalFormat Optional Variant Specifies the save format for the document. Can be one of the following WdOriginalFormat constants: wdOriginalDocumentFormat, wdPromptUser, or wdWordDocument.
RouteDocument Optional Variant True to route the document to the next recipient. If the document doesn't have a routing slip attached, this argument is ignored.
© 2007 Microsoft Corporation. All rights reserved.
KiLLiR (2009-06-20 18:50:00) [4]Похоже решение нашел. Не надо сохранять этот файл, точнее надо его не сохранять. Посему переформулирую вопрос. Чем заменить строку
WordApp.Documents.Item(1).Save;
чтобы изменения в файл не вносились?
P.S.
Не знаю почему, но делфи мне даже подсказок не дает в этой процедуре при наборе кода. Как обычно после точки список вариантов вываливаться должен.