Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.10;
Скачать: CL | DM;

Вниз

OLE   Найти похожие ветки 

 
RomaIzDurdoma ©   (2003-01-28 22:28) [0]

С помощью ОЛЕ создаю отчет в Ворде, распечатываю и закрываю Ворду. Но на медленных машинах Ворда не успевает подготовить к печати документ, и поэтому перед закрытием ругается. Вопрос - как узнать что Ворда отправила весь документ на печать?


 
Palladin ©   (2003-01-29 02:43) [1]

посмотри в справку по VBA
ИМХО:а вообще мне правильней по моему сохранять файл на диск и через ShellExecute открывать в ворде на предпросмотр этот файл. Пусть пользователь сам решает печатать его или нет.


 
asmith   (2003-01-29 12:45) [2]

Похоже, что с помощью OLE-автоматизации это сделать нельзя. Так у объекта Application начиная с Word2000 появилось только событие DocumentBeforePrint и не больше.


 
Palladin ©   (2003-01-29 13:04) [3]

кстати решение может быть таким

isPrinting:=true;
while isPrinting do
begin
isPrinting:=false;
try
WApp.Quit;
except
isPrinting:=true;
end;
end;


но если произошла другая ошибка то извиняйте, прога зациклится... нужно организовывать что то типа таймаута...


 
Chubais ©   (2003-01-29 13:09) [4]


> Palladin © (29.01.03 13:04)

сомнительное какое-то решение...
хотя бы sleep поставил штоль для убедительности...


 
Palladin ©   (2003-01-29 13:14) [5]

я написал принцип а не версию для реализации...


 
Chubais ©   (2003-01-29 13:54) [6]


> кстати решение может быть таким


> я написал принцип а не версию для реализации...



 
Palladin ©   (2003-01-29 14:15) [7]

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;



 
Palladin ©   (2003-01-29 14:17) [8]

ой...
ошибка...
не (bTimeOutValue=nTicCounter), а
(nTimeOutValue>nTicCounter)


 
Chubais ©   (2003-01-29 14:39) [9]


> Eclusive decision for Chubais

по всей видимости, имелось в виду Exclusive solution...


 
Palladin ©   (2003-01-29 14:43) [10]

да именно это и имелось ввиду...
в английском я не силен...


 
RomaIzDurdoma ©   (2003-01-29 23:08) [11]

А если закрывать Ворду так, чтобы он сам закрывался когда сможет? т.е не закрывать его принудительно, а разрешить закрыться когда он закончит свои фоновые процессы.
Может есть такой способ? Необязательно OLE.



Страницы: 1 вся ветка

Текущий архив: 2003.02.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-28781
Алекс_Админ
2003-02-01 16:54
2003.02.10
Файловые операции в Boot-Time


1-28908
Alexey V
2003-01-30 16:01
2003.02.10
Мастера ! Неужели никто не поможет с OpenDialog


1-28729
Oleon
2003-01-31 13:04
2003.02.10
Как зная только имя класс в Run-Time создать объект этого класса?


1-28706
DiXO
2003-01-31 14:47
2003.02.10
Как сделать DBGrid пустым???


14-29033
Strumpf
2003-01-24 10:35
2003.02.10
О выборе цвета из CMYK