![]() |
WordApp ActiveDocument Width
Hallo,
ich arbeite gerade an einer Anwendung die eine Tabelle in eine Word Dokument überträgt. (OLE Automation) Das funktioniert auch alles prächtig. Nur eine Sache konnte ich bisher nicht finden. Wie kann ich feststellen, wie die Breite (Width) des aktiven Dokuments (WordApp.ActiveDocument) ist? Beispiel: Die Tabelle hat z.B. 6 Spalten (Cols). Nun setze ich die letzten 5 Spalten auf eine Breite von 20.
Delphi-Quellcode:
Die erste Spalte würde ich nun gern auf die maximale (Rest)Größe setzen. Also auf Restgröße = Gesamtbreite - 5 * 20.
iRows := 10;
iCols := 6; WordTable := WordApp.ActiveDocument.Tables.Add(WordApp.Selection.Range, iRows, iCols); {...} for i := 2 to 6 do begin WordTable.Columns.Item(i).Width := 20; end; Gruß Hendrik |
Re: WordApp ActiveDocument Width
Dies ist keine Eigenschaft des Dokumentes, sondern der Seite
|
Re: WordApp ActiveDocument Width
Vielleicht hilft dir ja...
Delphi-Quellcode:
...weiter, A4 = 210 mm - Rechter Einzug - Linker Einzug - Epsilon = Maximale Breite für die Tabelle
WordApplication.MillimetersToPoints(...)
Zitat:
Delphi-Quellcode:
WordDocument.PageSetup.PageWidth
|
Re: WordApp ActiveDocument Width
Hallo zusammen,
man muß aber auch noch den Drucker beachten auf dem ausgedruckt werden soll. Leider hält Word sich da sehr bedeckt. Und ein "PDF-Drucker" verhält sich anders als ein lokal angeschlossener, und dieser wiederum anders als ein Netzdrucker. Auf 10 Seiten Text kann das manchmal eine halbe Seite mehr oder weniger ausmachen. Wenn man millimetergenau das Papierblatt ausnutzen will, dann ist man ziemlich verlassen. Ich würde empfehlen Breite und Höhe um 10mm zu verringern, damit bin ich bisher ganz gut gefahren. Gruß K-H |
Re: WordApp ActiveDocument Width
Deshalb passt Word das Dokument auch bei Änderung des Druckers an. Der obige Code greift also auf die aktuellen Werte zu.
|
Re: WordApp ActiveDocument Width
Wenn Du aber das Dokument erstellst, weißt Du dann mit Sicherheit welcher Drucker derjenige ist der als Drucker ausgewählt wird?
So gesehen ist das eingestellte Papierformat nur ein "Näherungswert", aber Hendrik möchte ja wissen wieviel Platz er "genau" hat. Und wenn der Rechner auf dem das Dokument erstellt wird, ein anderer ist als der auf dem es weiter ver/bearbeitet wird, könnte er ein Problem haben. Gruß K-H |
Re: WordApp ActiveDocument Width
das Programm scheint das Dokument allerdings dynamisch zu erzeugen
|
Re: WordApp ActiveDocument Width
Hallo again,
habe das nun dank dem Hinweis von omata so umgesetzt und das reicht zu diesem Zeitpunkt für meine Zwecke:
Delphi-Quellcode:
Grüße
WordTable.Columns.Item(1).Width := WordApp.ActiveDocument.PageSetup.PageWidth - (icols-1)*16
- WordApp.ActiveDocument.PageSetup.LeftMargin - WordApp.ActiveDocument.PageSetup.RightMargin; for i := 2 to iCols do begin WordTable.Cell(1,i).Range.Orientation := wdTextOrientationUpward; // zum Vertikalen anzeigen der Schrift WordTable.Columns.Item(i).Width := 16; end; Hendrik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz