![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Автоматическое закрытие Word после печати. [D6]
EternalWonderer © (2002-05-30 15:12:00)Задача:выдать документ на печать при помощи Word, после чего автоматически закрыть его.
Решение:
Procedure PrintClose(WordDoc: _Document);
Var EP: OleVariant;
Begin
EP := EmptyParam;
WordDoc.PrintOut(EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP);
WordDoc.Close(EP,EP,EP);
End;
Проблема:Всё работает замечательно, если Word не закрывается вместе с документом (т.е. если есть ещё открытые документы). В противном случае мы имеем малоприятное сообщение "Печать ещё не закончена. Закрытие Word приведёт ...". При помощи какого приёма можно заставить Word сначала допечатать документ, а потом уже закрыться?
EternalWonderer (2002-05-30 17:19:00) [1]Спасибо, посмотрю ...
vecs (2002-05-30 17:18:00) [2]ето и многое другое может халявный ARWordReport
http://shortway.to/vsoft
EternalWonderer (2002-05-30 16:40:00) [3]Отлично! Требуемая функциональность получена. Осталось немного "подрехтовать" (например, вынести запрос в отдельный поток, добавить контроль открытия других документов на момент окончания печати и т.д.). БОЛЬШОЕ спасибо, Алексей..
А вообще, мне кажется предпочтительней вариант с макросом, - вот только возиться некогда ...
AFROLOV (2002-05-30 16:20:00) [4]Цитата из справки по VBA:
BackgroundPrintingStatus Property
Returns the number of print jobs in the background printing queue. Read-only Long.
Ждем след образом:
While (WordDoc.Application.BackgroundPrintingStatus>0) do
begin
end;
EternalWonderer (2002-05-30 16:01:00) [5]ОК, можно попытаться дождаться. Только вот как "спросить" у Word, закончил он печать документа или ещё нет?
Может, возможен такой вариант: написать макрос на VB, "запихнуть" его в Word, и запускать после PrintOut вместо Close, чтобы он дожидался окончания печати и закрывал документ (и Word)?
AFROLOV (2002-05-30 15:44:00) [6]Тогда есть предложение дождаться окончания печати и после этого закрывать Word. Или закрыть все документы и после этого закрывать Word.
EternalWonderer (2002-05-30 15:37:00) [7]>AFROLOV © (30.05.02 15:26)
Маленькая поправочка:
WordDoc. Application.DisplayAlerts := wdAlertsNone;
Спасибо, но НЕ помогло.
AFROLOV (2002-05-30 15:26:00) [8]
Const wdAlertsNone=0;
.....
.....
Procedure PrintClose(WordDoc: _Document);
Var EP: OleVariant;
Begin
EP := EmptyParam;
WordDoc.PrintOut(EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP);
WordDoc.DisplayAlerts:=wdAlertsNone;
WordDoc.Close(EP,EP,EP);
End;