Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OLE Drucker WinWord (https://www.delphipraxis.net/88511-ole-drucker-winword.html)

Christoph Frank 16. Mär 2007 14:54


OLE Drucker WinWord
 
Hallo zusammen,

//Ausdrucken
MSWord.Application.PrintOut(Range := 0, Item := 0, Copies := 1, PageType := 0);
//Dateien schließen
MSWord.Documents.Close(SaveChanges := 0);
//MSWord schließen
MSWord.Quit;

Aus obigem Code ist ersichtlich, was ich tun möchte. Eigentlich will ich nach erfolgreichem Ausdruck WinWord wieder schließen, erhalte aber die Message, daß Word gerade druckt und falls ich mit 'Ja' antworte ist alles futsch.
Wie kann ich sicherstellen, daß WinWord erst nach Beendigung des Druckens geschlossen wird?

Gruß Christoph

toms 16. Mär 2007 15:03

Re: OLE Drucker WinWord
 
Vielleicht hilft ein
Delphi-Quellcode:
MSWord.DisplayAlerts := False;

Christoph Frank 17. Mär 2007 11:23

Re: OLE Drucker WinWord
 
Jetzt weiß ich nicht, ob Du die Antwort zweimal bekommst, ich war schon ausgelogged als ich sie schrieb.

habe Deinen Tipp ausprobiert, hat aber nicht geklappt. Nach langen Versuchen habe ich aber folgende Lösung gefunden:

//Ausdrucken
MSWord.Application.PrintOut(Background := false, Range := 0, Item := 0, Copies := 1, PageType := 0);
//Dateien schließen
MSWord.Documents.Close(SaveChanges := 0);
//MSWord schließen
MSWord.Quit;

Background := true -> bedeutet, daß das Makro fortgesetzt werdn soll, während WinWord druckt.
Background := false -> setzt dann eben das Makro nicht fort.

Vielen Dank trotzdem für Deine Hilfe
Gruß Christoph

Jelly 17. Mär 2007 12:27

Re: OLE Drucker WinWord
 
Du hast die Lösung ja schon gefunden. Word druckt normalerweise im Hintergrund, d.h. du kannst dein Dokument weiter bearbeiten, während Word an den Druckertreiber streamt. Ein Schliessen von Word bricht dieses Streamen natürlich ab, und deshalb muss du diese Hintergrunddrucken abschalten, und das geht so, wie du beschrieben hast.

Ich hab mich auch mal intensiver damit beschäftigen müssen. Vielleicht erhältst Du ja noch einige interessante Erkenntnisse aus meinem Tool PrintDoc.

vanmir 16. Jan 2008 12:59

Re: OLE Drucker WinWord
 
Hi

Meine Lösung ist :

Delphi-Quellcode:
  while WordApplication1.BackgroundPrintingStatus > 0 do
      application.processmessages


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz