Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi WordTable.Columns Text zentrieren (https://www.delphipraxis.net/112080-wordtable-columns-text-zentrieren.html)

aaron 14. Apr 2008 21:51


WordTable.Columns Text zentrieren
 
Hallo liebes Forum,

ich erzeuge mittels Code eine Tabelle in einem Worddokument.
Delphi-Quellcode:
 WordTable.Columns.Item(1).SetWidth(40, 0);
  WordTable.Columns.Item(2).SetWidth(420, 0);
Wie kann ich nur bei
Delphi-Quellcode:
WordTable.Columns.Item(1)
den Text zentrieren, bei meinen Versuchen wird immer alles zentriert?

Freundliche Grüße
Aaron

sx2008 15. Apr 2008 01:44

Re: WordTable.Columns Text zentrieren
 
Lade doch mal deine Tabelle (manuell !) in Word und starte dann eine Macroaufzeichnung.
Dann eine bestimmte Spalte zentrieren und Marcoaufzeichnung beenden.
Wenn du das erzeugte Macro bearbeitest, hast du den VB-Code vor dir.
Dieser lässt sich meist mehr oder weniger direkt in Delphi umsetzen.

aaron 15. Apr 2008 06:46

Re: WordTable.Columns Text zentrieren
 
Stimmt, jetzt muss ich nur noch die Zeilen zählen (die Tabellen werden aus einem Stringgrid übertragen)
Delphi-Quellcode:
    Selection.MoveDown Unit:=wdLine, Count:=5, Extend:=wdExtend
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Die Makros sind ja coool.

Viele Grüße
Aaron

aaron 17. Apr 2008 17:02

Re: WordTable.Columns Text zentrieren
 
Hallo,

das kann nicht funktionieren, es gibt Probleme mit Unit:=wdLine wegen dem reservierten Wort "Unit" in Delphi:
Delphi-Quellcode:
   WordTable.Selection.MoveDown Unit:=wdLine, Count:=iZeilen, Extend:=wdExtend
   WordTable.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Freundliche Grüße
Aaron

Keldorn 17. Apr 2008 17:23

Re: WordTable.Columns Text zentrieren
 
Hallo

zeig mal bitte mehr code, insbeosndere, wie du dich mit Word verbindest.

Gruß Frank

aaron 17. Apr 2008 17:27

Re: WordTable.Columns Text zentrieren
 
Hallo, gerne :-)


Delphi-Quellcode:
  try
   Wordapp := GetActiveOleObject('Word.Application');

   except ShowMessage('"Microsoft Word" ist noch nicht gestartet, öffne bitte zuerst ein Dokument!');
     Exit;
  end;
 wordversion := Wordapp.version;
 NewDoc := WordApp.ActiveDocument.Content;
  S := WordApp.Selection;
  s.Font.Name:='Arial';
  s.Font.Size :=10;
  WordTable := NewDoc.Tables.Add...
Reicht das als Code?

Viele Grüße
Aaron

Keldorn 18. Apr 2008 21:22

Re: WordTable.Columns Text zentrieren
 
Hallo

geht doch recht einfach:

Makrovariante, du mußt dich in der 1. Zelle befinden
Delphi-Quellcode:
  //1. spalte zentriert
  WordApp.Selection.movedown(wdline,4,wdextend);
  WordApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;
  //nächste Spalte
  WordApp.Selection.moveright(wdcharacter,1);

  //2.Spalte rechtbündig
  WordApp.Selection.movedown(wdline,4,wdextend);
  WordApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphRight;
  WordApp.Selection.moveright(wdcharacter,1);

Besser wird es aber sein, die spalte direkt zu selektieren:
Delphi-Quellcode:
  WordApp.activedocument.Tables.item(1).Columns.item(3).Select;
  WordApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphRight;

  WordApp.activedocument.Tables.item(1).Columns.item(4).Select;
  WordApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;
Statt WordApp.activedocument.Tables.item(1) kannst du ja deine Rückgabe beim add verwenden, kannst dir ja unter Umständen nicht sicher sein, daß deine Tabelle auch die 1. ist.

Gruß Frank

aaron 19. Apr 2008 00:34

Re: WordTable.Columns Text zentrieren
 
Zitat:

Zitat von Keldorn
Hallo
geht doch recht einfach:

Stimmt, hätte doch noch mehr ausprobieren können.
Zitat:

Zitat von Keldorn
Delphi-Quellcode:
  //nächste Spalte
  WordApp.Selection.moveright(wdcharacter,1);

Wofür ist das genau, wenn ich diese Zeile rauslasse dann wird die Tabelle trotzdem zentriert?
Zitat:

Zitat von Keldorn
Delphi-Quellcode:
  //2.Spalte rechtbündig
  WordApp.Selection.movedown(wdline,4,wdextend);
  WordApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphRight;
  WordApp.Selection.moveright(wdcharacter,1);

Ich kann hier keinen Unterschied zur ersten Spalte (Code) finden, Word nimmt dann wohl automatisch die nächste Spalte. (Interessant - ist so, habs gerade getestet)

Vielen Dank für deine Hilfe
Freundliche Grüße
Aaron


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