AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi -> MSWord, Tabelle zentrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi -> MSWord, Tabelle zentrieren

Ein Thema von pumpe · begonnen am 30. Mär 2006 · letzter Beitrag vom 31. Mär 2006
Antwort Antwort
pumpe

Registriert seit: 30. Mär 2006
Ort: Neubrandenburg
8 Beiträge
 
#1

Delphi -> MSWord, Tabelle zentrieren

  Alt 30. Mär 2006, 11:56
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.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Delphi -> MSWord, Tabelle zentrieren

  Alt 30. Mär 2006, 12:11
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.
  Mit Zitat antworten Zitat
pumpe

Registriert seit: 30. Mär 2006
Ort: Neubrandenburg
8 Beiträge
 
#3

Re: Delphi -> MSWord, Tabelle zentrieren

  Alt 30. Mär 2006, 13:34
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.
  Mit Zitat antworten Zitat
pumpe

Registriert seit: 30. Mär 2006
Ort: Neubrandenburg
8 Beiträge
 
#4

Re: Delphi -> MSWord, Tabelle zentrieren

  Alt 31. Mär 2006, 10:14
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.

WordApp.Selection.PageSetup.LeftMargin:= 30; Trotzdem Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


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 00: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