![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
OLE [D5, Win95/98, WinME]
RomaIzDurdoma © (2003-01-28 22:28:00)С помощью ОЛЕ создаю отчет в Ворде, распечатываю и закрываю Ворду. Но на медленных машинах Ворда не успевает подготовить к печати документ, и поэтому перед закрытием ругается. Вопрос - как узнать что Ворда отправила весь документ на печать?
RomaIzDurdoma (2003-01-29 23:08:00) [1]А если закрывать Ворду так, чтобы он сам закрывался когда сможет? т.е не закрывать его принудительно, а разрешить закрыться когда он закончит свои фоновые процессы.
Может есть такой способ? Необязательно OLE.
Palladin (2003-01-29 14:43:00) [2]да именно это и имелось ввиду...
в английском я не силен...
Chubais (2003-01-29 14:39:00) [3]
> Eclusive decision for Chubais
по всей видимости, имелось в виду Exclusive solution...
Palladin (2003-01-29 14:17:00) [4]ой...
ошибка...
не (bTimeOutValue=nTicCounter), а
(nTimeOutValue>nTicCounter)
Palladin (2003-01-29 14:15:00) [5]Eclusive decision for Chubais
bTryMore:=true;
while bTryMore do
begin
bTryMore:=false;
nTimeOutValue:=300;
nTicCounter:=0;
isPrinting:=true;
while (isPrinting) and (bTimeOutValue=nTicCounter) do
begin
isPrinting:=false;
try
WApp.Quit;
except
isPrinting:=true;
end;
Sleep(3000);
nTicCounter:=nTicCounter+1;
end;
if bTimeOutValue=nTicCounter then bTryMore:=Application.MessageBox("Время ожидания вывода на печать закончилось. Отменить печать?",MB_YESNO)=ID_NO;
end;
Chubais (2003-01-29 13:54:00) [6]
> кстати решениеможет быть таким
> я написал принципа не версию для реализации...
Palladin (2003-01-29 13:14:00) [7]я написал принцип а не версию для реализации...
Chubais (2003-01-29 13:09:00) [8]
> Palladin © (29.01.03 13:04)
сомнительное какое-то решение...
хотя бы sleep поставил штоль для убедительности...
Palladin (2003-01-29 13:04:00) [9]кстати решение может быть таким
isPrinting:=true;
while isPrinting do
begin
isPrinting:=false;
try
WApp.Quit;
except
isPrinting:=true;
end;
end;
но если произошла другая ошибка то извиняйте, прога зациклится... нужно организовывать что то типа таймаута...
asmith (2003-01-29 12:45:00) [10]Похоже, что с помощью OLE-автоматизации это сделать нельзя. Так у объекта Application начиная с Word2000 появилось только событие DocumentBeforePrint и не больше.
Palladin (2003-01-29 02:43:00) [11]посмотри в справку по VBA
ИМХО:а вообще мне правильней по моему сохранять файл на диск и через ShellExecute открывать в ворде на предпросмотр этот файл. Пусть пользователь сам решает печатать его или нет.