Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi -> MSWord, Tabelle zentrieren (https://www.delphipraxis.net/66487-delphi-msword-tabelle-zentrieren.html)

pumpe 30. Mär 2006 10:56


Delphi -> MSWord, Tabelle zentrieren
 
Moin,

wollte mich mal vorstellen. Ich bin der Neue, ich komm jetzt öfter! ;-)

So nun zu meinem Problem. Ich möchte die Daten aus einer DBGrid in eine Word Tabelle übertragen. Soweit funktioniert das ja aber nun ist die Tabelle nicht in der Mitte des Wordokument´s und ich krieg es nicht hin. Ich habe schon gesucht aber ich finde nur wie man den Text in der Tabelle zentriert und nicht die Tabelle selber!

Hier mal der Code, meine Zentrierversuche hab ich mal raus genommem. ;-)

Delphi-Quellcode:
 
if radiogroup1.ItemIndex = 0 then
  begin
    ProgressBar1.Position:= 1;
    screen.Cursor := crHourglass;
    try
      // Word Instanz erzeugen
      WordApp:= CreateOleObject('Word.Application');
      ProgressBar1.Position:= 2;
    except
      // Fehler....
      ShowMessage('Word kann nicht gestartet werden');
      Exit;
    end;

    // Spalten, Reihen ermitteln
    iCols := StringGrid1.ColCount;
    iRows := StringGrid1.RowCount;

    ProgressBar1.Position:= 3;

    // Neues Dokument einfügen
    NewDoc := WordApp.Documents.Add ;

    S:= WordApplication1.Selection;
    S.TypeText('Überschrift');
    S.TypeParagraph;
    S.TypeParagraph;
    S.TypeParagraph;
    S.TypeParagraph;


    // Tabelle einfügen
    WordTable:= NewDoc.Tables.Add(WordApp.Selection.Range, iRows, iCols);

    WordTable.Borders.OutsideLineStyle:= wdLineStyleSingle;
    WordTable.Borders.InsideLineStyle:= wdLineStyleSingle;
    ProgressBar1.Position:= 4;

    WordTable.Columns.Item(1).SetWidth(50, 0);
    WordTable.Columns.Item(2).SetWidth(50, 0);
    WordTable.Columns.Item(3).SetWidth(65, 0);
    WordTable.Columns.Item(4).SetWidth(120, 0);
    WordTable.Columns.Item(5).SetWidth(60, 0);
    WordTable.Columns.Item(6).SetWidth(200, 0);

    begin
      ProgressBar1.Max:= iRows;

      // Tabelle ausfüllen mit Daten von Stringgrid
      for iGridRows := 1 to iRows do
      begin
          ProgressBar1.Position:= 6+iGridRows;
        for jGridCols := 1 to iCols do
        begin
          WordTable.Cell(iGridRows, jGridCols).Range.Text:= StringGrid1.Cells[jGridCols - 1, iGridRows - 1];
        end;
      end;
    end;

    // Word anzeigen
    WordApp.Visible:= true;

    ProgressBar1.Position:= 0;

    // Cleanup...
    WordApp := Unassigned;
    NewDoc := Unassigned;
    WordTable := Unassigned;
  end
  else
Danke schonmal für Eure Antworten.

Robert Marquardt 30. Mär 2006 11:11

Re: Delphi -> MSWord, Tabelle zentrieren
 
Na erst mal herzlich willkommen.

Was Word macht kriegt man am besten in Word raus.
Zeiche ein Makro auf und zentriere dann eine Tabelle in Word.
Danach schau dir die Makro-Source an.
von da ab sollte es nicht zu schwierig sein das auf Delphi-Seite zu implementieren.

pumpe 30. Mär 2006 12:34

Re: Delphi -> MSWord, Tabelle zentrieren
 
Danke für die Antwort. Das ging ja fix.

Wenns nach Word geht, müsste es so gehen:
Delphi-Quellcode:
WordApp.Selection.Tables(1).Select;
WordApp.Selection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;
Tut es aber nicht. Ich bekomme die Fehlermeldung: 'Tables' ist keine Methode
Hier im Forum hab ich gelesen das es so gehen müsste wie hier:

Delphi-Quellcode:
WordApp.Selection.Tables.Item(1).Select;
WordApp.Selection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;
Tut er aber nur bedingt. Er zentriert nur den Text der in der Tabelle steht.

pumpe 31. Mär 2006 09:14

Re: Delphi -> MSWord, Tabelle zentrieren
 
Moin,
ich habs mal anders gemacht. Mit folgender Zeile hab ich den linken Rand weiter nach links verschoben. Ist zwar nicht zentrieren in dem Sinne aber kommt aufs selbe raus. :wiejetzt:

Delphi-Quellcode:
WordApp.Selection.PageSetup.LeftMargin:= 30;
Trotzdem Danke!


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