Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid nach Word - Formatierung? (https://www.delphipraxis.net/128349-stringgrid-nach-word-formatierung.html)

capo 28. Jan 2009 12:25


Stringgrid nach Word - Formatierung?
 
Ist es möglich einzelne Sätze des übertragenen Stringgrids zu formatieren?

Delphi-Quellcode:
uses
  ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  WordApp, NewDoc, WordTable: OLEVariant;
  iRows, iCols, iGridRows, jGridCols: Integer;
begin
  try
    // Create a Word Instance
    // Word Instanz erzeugen
    WordApp := CreateOleObject('Word.Application');
  except
    // Error...
    // Fehler....
    Exit;
  end;

  // Show Word
  // Word anzeigen
  WordApp.Visible := True;

  // Add a new Doc
  // Neues Dok einfügen
  NewDoc := WordApp.Documents.Add;

  // Get number of columns, rows
  // Spalten, Reihen ermitteln
  iCols := StringGrid1.ColCount;
  iRows := StringGrid1.RowCount;

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

  // Fill up the word table with the Stringgrid contents
  // Tabelle ausfüllen mit Stringgrid Daten
  for iGridRows := 1 to iRows do
    for jGridCols := 1 to iCols do
      WordTable.Cell(iGridRows, jGridCols).Range.Text :=
        StringGrid1.Cells[jGridCols - 1, iGridRows - 1];

  // Here you might want to Save the Doc, quit Word...
  // Hier evtl Word Doc speichern, beenden...

  // ...
 
  // Cleanup...
  WordApp := Unassigned;
  NewDoc := Unassigned;
  WordTable := Unassigned;
end;

mkinzler 28. Jan 2009 12:33

Re: Stringgrid nach Word - Formatierung?
 
Ja. Für Details lass dir den Foramtierungsvorgang in Word aufzeichnen und schau dir den erzeugten VBA Code an

capo 28. Jan 2009 12:36

Re: Stringgrid nach Word - Formatierung?
 
Hallo...das funktioniert ja, weiß ich.

Es soll aber gleich beim übertragen vom Stringgrid nach Word bestimmte Wörter oder Sätze formatiert werden!
Beispiel:
Im Text des Stringgrids steht irgendwo: "Hurz- das LAmm".
Dieser Text soll in Word Fett angezeit werden.

mkinzler 28. Jan 2009 12:44

Re: Stringgrid nach Word - Formatierung?
 
Einen String nach bestimmten Wörtern zu durchsuchen sollte kein Problem darstellen.
Oder was ist genau dein Problem/Frage?

capo 28. Jan 2009 12:47

Re: Stringgrid nach Word - Formatierung?
 
Stimmt, da hast du Recht.
Ich bin immer nur von der Möglichkeit ausgegangen das gesuchte zu formatierende Wort gleich bei der Übertragung zu formatieren.
Ich kann es evtl. ja auch im Nachhinein in Word formatieren.
Obwohl der Vorgang dann noch länger dauern wird und ich gerade auch nicht weiß wie das geht.

capo 28. Jan 2009 14:22

Re: Stringgrid nach Word - Formatierung?
 
Meine Frage war aber eher so gemeint dass während mein Code nach Word kopiert bestimmte Wörter (direkt beim einfügen in Word)formatiert werden, nicht im Nachhinein.

capo 31. Jan 2009 16:10

Re: Stringgrid nach Word - Formatierung?
 
Das Einfügen in das Worddokument über das Stringgrid funktioniert ja.

Im Nachinein könnte die Formatierung im Worddokument hinbekommen, nachdem das Stringgrid schon eingefügt wurde.
aber quasi während der Übertragung bevor das Stringgrid in das Worddokument eingefügt wird ist das Problem.

Wie würdet ihr das machen?
Habt ihr evtl ein praktisches Beispiel für mich?

Suchende Grüße
Capo

capo 2. Feb 2009 22:39

Re: Stringgrid nach Word - Formatierung?
 
Hallo...ich brauche wirklich mal ein Feedback und auch ein praktisches Besipiel.
Lasst mich nicht hängen!

ThoPos 3. Feb 2009 13:06

Re: Stringgrid nach Word - Formatierung?
 
Hallo Capo,

ich hatte mal ein ähnliches Problem, nur Hoch-/Tiefstellung anstatt Fett.

Dieses Beispiel schreibt an die Textmarke "Position" die Zeichenfolge "Zeichenfolge", dabei werden alle Ziffern tiefgestellt.
(Die Routine geht davon aus, daß Word bereits läuft und das Dokument bereits geladen ist.)

Delphi-Quellcode:
Procedure DatenNachWord(Position, Zeichenfolge: String)
var
  wrd    : OLEVAriant;
  doc    : OLEVAriant;
  bkm    : OLEVAriant;
  n      : String;
  j      : Integer;
  ...
begin
  wrd := GetActiveOLEObject('Word.Application'); // mit aktuellem Word verbinden
  doc := wrd.activedocument; // mit aktivem Dokument verbinden
  ...
  bkm := doc.bookmarks.Item(Position).Range.Select; // Textmarke suchen und selektieren
  wrd.selection.TypeText(Zeichenfolge); // Text an selektierter Position schreiben
  wrd.selection.MoveLeft(1, Length(Zeichenfolge), 1); // eingefügten Text wieder selektieren
  doc.bookmarks.add(Position, wrd.selection.range); // Textmarke neu festlegen
  bkm := doc.bookmarks.Item(Position).Range.Select; // Textmarke (sicherheitshalber) neu selektieren, evtl. ist diese Zeile überflüssig !!!
  wrd.selection.moveleft( 1 , 1, 0); // An den Anfang des selektierten Textes gehen
  n := Zeichenfolge; // Text in eine Variable holen
  If n <> '' Then // Leere Zeichenfolge ?
    for j := 1 to Length(n) do
    begin
      wrd.Selection.moveRight(1, 1, 1); // Ein Zeichen nach rechts auswählen
      If ((n[j] >= '0') And (n[j] <= '9')) Then // Zeichen abfragen
        wrd.Selection.Font.Subscript := True // hochstellen
      Else
        wrd.Selection.Font.Subscript := False; // nicht hochstellen
    end;
  ...
end;
Du müßtest IMHO nur wenig anpassen.

Gruß aus Köln
Thomas

capo 4. Feb 2009 08:29

Re: Stringgrid nach Word - Formatierung?
 
DANKE!!!!!!!


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