Hallo,
mir fällt da so einiges auf was nicht optimal ist.
meine speziell XE2 und Word 2010
Ist das die kleinste Word Version die unterstützt werden soll?
Was wäre hier richtig, mit oder ohne Application? Compilieren lässt sich beides.
So wie du Word eingebunden hast (späte Bindung), kompiliert er auch alles. Du kannst auch schreiben
Dokument.StirbLangsam.JetztErstRecht
. Der Compiler kann nicht meckern, da
Dokument
vom Typ Variant ist, wo alles drin sein kann. Erst zur Laufzeit kracht es.
Im Quellcode werden folgende Einträge rot unterstrichen: Template, Background, Range, Item, Copies, Pagetype, SaveChanges
Weil er nicht weiß was im Variant zur Laufzeit drin stecken wird.
Auch das muss man doch anders lösen ?
Ja. Erzeuge dir von der kleinsten Word-Version über Komponente -> Komponente importieren -> Typbibliothek importieren eine TLB. Und benutze die in der TLB aufgeführten Interfaces.
Dokument := GetActiveOleObject('Word.Application');
GetActiveOleObject gibt das Interface zum Word-Anwendungs-Objekt zurück. Benne die Variable lieber WordApp statt Dokument.
Dokument.Documents.Add(Template := Anwendungsverzeichnis + 'Vorlage\XYZ.dot');
Das Add gibt dir das erstellte Dokument zurück. Speichers es in einer Variablen und benutze diese um auf das Dokument einzuwirken.
Delphi-Quellcode:
Dokument.PrintOut(Background := false, Range := 0, Item := 0, Copies := AnzahlAusdrucke, PageType := 0);
Dokument.Application.PrintOut(Background := false, Range := 0, Item := 0, Copies := AnzahlAusdrucke, PageType := 0);
Ich meine das Dokument hat ebenfalls ein Print-Methode. Wenn man die von Application benutzt wird immer das aktive Dokument gedruckt. Im schlimmsten Fall hat der Benutzer dazwischen geklickt und ein anderes aktiviert.
einbeliebigername.