AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

WordApp ActiveDocument Width

Ein Thema von GoTo0815 · begonnen am 4. Jun 2009 · letzter Beitrag vom 7. Jun 2009
Antwort Antwort
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#1

WordApp ActiveDocument Width

  Alt 4. Jun 2009, 23:58
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:
  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;
Die erste Spalte würde ich nun gern auf die maximale (Rest)Größe setzen. Also auf Restgröße = Gesamtbreite - 5 * 20.


Gruß

Hendrik
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: WordApp ActiveDocument Width

  Alt 5. Jun 2009, 00:26
Dies ist keine Eigenschaft des Dokumentes, sondern der Seite
Markus Kinzler
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: WordApp ActiveDocument Width

  Alt 5. Jun 2009, 00:33
Vielleicht hilft dir ja...
WordApplication.MillimetersToPoints(...) ...weiter, A4 = 210 mm - Rechter Einzug - Linker Einzug - Epsilon = Maximale Breite für die Tabelle


Zitat von mkinzler:
Dies ist keine Eigenschaft des Dokumentes, sondern der Seite
Guter Hinweis, siehe...
WordDocument.PageSetup.PageWidth
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

Re: WordApp ActiveDocument Width

  Alt 5. Jun 2009, 13:14
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: WordApp ActiveDocument Width

  Alt 5. Jun 2009, 13:19
Deshalb passt Word das Dokument auch bei Änderung des Druckers an. Der obige Code greift also auf die aktuellen Werte zu.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

Re: WordApp ActiveDocument Width

  Alt 5. Jun 2009, 16:54
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: WordApp ActiveDocument Width

  Alt 5. Jun 2009, 16:58
das Programm scheint das Dokument allerdings dynamisch zu erzeugen
Markus Kinzler
  Mit Zitat antworten Zitat
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#8

Re: WordApp ActiveDocument Width

  Alt 7. Jun 2009, 10:45
Hallo again,

habe das nun dank dem Hinweis von omata so umgesetzt und das reicht zu diesem Zeitpunkt für meine Zwecke:

Delphi-Quellcode:
  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;
Grüße
Hendrik
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 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