Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tabelle formatieren (https://www.delphipraxis.net/113989-tabelle-formatieren.html)

little_budda 17. Mai 2008 21:18


Tabelle formatieren
 
Hallo,

ich nutze folgenden Code um eine Tabelle in einem Word Dokument anzulegen und zu füllen.
Delphi-Quellcode:
...
         // Tabelle einfügen
          vWordTable := vWordInstanz.Selection.Tables.Add(vAktiveDocument.Range, StringGridDaten.RowCount, StringGridDaten.ColCount);
          // Daten aus dem Stringrid eintragen
          for iRow := 1 to StringGridDaten.RowCount do
            begin
              for iCol := 1 to StringGridDaten.ColCount do
                begin
                  vWordTable.Cell(iRow, iCol).Range.Text := StringGridDaten.Cells[(iCol - 1), (iRow - 1)];
                end;
            end;

...
Das klappt auch soweit ganz gut.

Ich scheitere nun an zwei Dingen.
1. Wie formatiere ich diese Tabelle?
Spaltenbreite, Hintergrundfarbe, etc.
2. Wenn ich eine zweite Tabelle hinter der ersten anlegen möchte,
dann wird meine erste Tabelle gelöscht. (Verzweifelung)

Ich wäre echt dankbar für ein paar Tipps.

Gruß Holger.

:gruebel:

semo 17. Mai 2008 21:44

Re: Tabelle formatieren
 
mein tipp:

zeichne dir nen makro auf wenn du dein gewünschtes vorhaben in word umsetzt. schau dir dann den quelltext des makros an.

little_budda 18. Mai 2008 13:01

Re: Tabelle formatieren
 
Klasse Idee mit dem Makro.

Klappt auch schon einiges.
Ich habe nun versucht folgenden VBA CODE
Delphi-Quellcode:
  Selection.Tables(1).Columns(1).PreferredWidthType = wdPreferredWidthPoints
  Selection.Tables(1).Columns(1).PreferredWidth = CentimetersToPoints(4)
in Delphi umzusetzten
Delphi-Quellcode:
...
  // Tabelle einfügen
  vWordTable := vWordInstanz.Selection.Tables.Add(vAktiveDocument.Range, StringGridDaten.RowCount, (StringGridDaten.ColCount - 1));
...
  // Spalte 1 auf eine Breite von 4 cm einrichten
  vWordTable.Columns(1).PreferredWidthType := 3; // wdPreferredWidthPoints = 3
  vWordTable.Columns(1).PreferredWidth := 113;   // 4.0 cm
...
Zur Lauzeit bringt mir die IDE immer einen Fehler mit der Meldung "Colums ist keine Methode".
Denke er stört sich an dem Spaltenindex in der Klammern,
aber ich habe keine Ahnung wie ich den Index sonst setzen soll.

:gruebel:

mkinzler 18. Mai 2008 13:03

Re: Tabelle formatieren
 
Versuch mal
Delphi-Quellcode:
vWordTable.Columns.Items[i]

little_budda 18. Mai 2008 17:49

Re: Tabelle formatieren
 
Also, die Variante mit Items klappt leider auch nicht so recht.

Mit
Delphi-Quellcode:
vWordTable.Columns.items(1).PreferredWidthType := 3; // wdPreferredWidthPoints = 3
vWordTable.Columns.items(1).PreferredWidth := 113;   // 4.0 cm
kommt folgend Fehlermeldung:
Die Methode 'Items' wird vom Automatisierungsobjekt nicht unterstützt

Und mit
Delphi-Quellcode:
vWordTable.Columns[1].PreferredWidthType := 3; // wdPreferredWidthPoints = 3
vWordTable.Columns[1].PreferredWidth := 113;   // 4.0 cm
meckert der Compiler über die nicht unterstützte Methoden "PreferredWidthType" und "PreferredWidth"

Vielleicht hat ja noch jemand eine Idee für mich.
:gruebel:

little_budda 19. Mai 2008 07:36

Re: Tabelle formatieren
 
Oder kann mir, als Alternative,
vielleicht jemand einen Tipp geben wie ich ein Makro in Word starte?

Dann würde ich mir die Formatierungen als Makro speichern und dort ausführen.
Obwohl ich eigentlich der Meinung bin das ich die Formatierung über die OLE Schnittstelle hinkriegen müsste.

:gruebel:

Mike07 7. Jul 2008 09:57

Re: Tabelle formatieren
 
statt "Items" musst du "Item" schreiben und statt eckigen Klammern dann runde klammern verwenden!

also folgendermaßen:
Tabelle.Columns.Item(1).PreferredWidthType:=wdPref erredWidthPoints;
Tabelle.Columns.Item(1).PreferredWidth:=45;

PreferredWidthType erwartet übrigens einen Typ und keine Zahl...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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