Конференция "Corba" » Печать документа через Word [Delphi, Windows]
 
  • silversmith (18.09.06 10:39) [0]
    Добрый день уважаемые коллеги.

    Подскажите как решить следующую проблему:
    Я печатаю из своего приложения доковский документ методом PrintOut
    Как бы мне узнать, что документ уже распечатался и от него можно отцепиться
    W:=CreateOleObject('Word.Application');
    W.Documents.Open(FileName);
    W.ActiveDocument.PrintOut;
    Вот здесь бы я хотел подождать момента, когда он весь уйдет на печать и сделать;
    W.Quit;
    W:=Unasigned;

    Delphi 7, MS Windows XP SP2, Word2000
  • umbra © (18.09.06 10:56) [1]

    > Вот здесь бы я хотел подождать момента, когда он весь уйдет
    > на печать и сделать;

    в ворде такого способа нет, судя по всему. Надо просто сделать паузу, длительность которой подобрать эмпирически.
  • silversmith (18.09.06 11:02) [2]
    Спасибо за ответ.
    Жаль, но это не вариант. Печатается большое количество документов - в районе нескольких сотен в цикле и ждать у заказчика никаких сил не хватит если у меня к примеру средний документ уходит на печать 5-7 секунд.

    Может можно как-то у винды спросить состояние принтера? Правда это уже оффтоп в Corba и COM.
  • Машихин Алексей (19.09.06 13:14) [3]
    Я сделал так :

    try
     w:=createoleobject('Word.application');
     w.Documents.Open(s_out);
     w.Application.PrintOut(false);
                                    ^^^
                                      вот это означает что надо печатать не в фоновом режиме!
     w.quit;
    except
     w.quit;
    end;
  • Virgo_Style © (19.09.06 14:09) [4]
    BackgroundPrintingStatus ?
 
Конференция "Corba" » Печать документа через Word [Delphi, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0]