Einzelnen Beitrag anzeigen

ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

Re: Stringgrid nach Word - Formatierung?

  Alt 3. Feb 2009, 13:06
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
Thomas
  Mit Zitat antworten Zitat