Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   RichEdit.Text in Word-Document übertragen (https://www.delphipraxis.net/84489-richedit-text-word-document-uebertragen.html)

Ralf Stehle 17. Jan 2007 15:18


RichEdit.Text in Word-Document übertragen
 
Wenn ich RichEdit.Text in Word-Document übertragen erhalte ich nur den unformatierten Text.
Gibt es eine Möglichkeit, den Text mit allen Formatierungen in ein Word-Document zu übertragen? Da ich den RichEdit.Text mit einer Textmarke mitten in ein Dokument einfügen möchte, ist der Weg über Abspeichern als Datei nicht möglich

Folgender Code ergibt leider nur unformatierten Text im Word-Document:

Delphi-Quellcode:
With WordApplication1.Selection do begin
  vBookmark:='Textmarke1'; vWhat:=wdGotoBookmark;
  RichEdit1.PlainText := False;
  TypeText(RichEdit1.Text);
end

marabu 17. Jan 2007 17:28

Re: RichEdit.Text in Word-Document übertragen
 
Hallo Ralf,

ich habe jetzt keinen Zugriff auf Word, aber wie soll das mit TypeText() funktionieren? Selbst wenn du als String-Parameter einen RTF-String übergeben würdest, dürfte das Ergebnis lediglich RTF-Code im Klartext sein. Ich würde den Text über das ClipBoard austauschen. PasteSpecial() mit dem Parameter wdPasteRTF anstelle von TypeText() sollte das gewünschte Ergebnis bringen. Unschön dabei ist die Verseuchung der Windows-Zwischenablage. Da müsste man sich eventuell noch mit der Office-Zwischenablage auseinandersetzen.

Grüße vom marabu

Ralf Stehle 17. Jan 2007 17:49

Re: RichEdit.Text in Word-Document übertragen
 
Danke für den Tipp. Ich habe auch eine Lösung mit einem Stream versucht, aber den kann ich wahrscheinlich auch nicht direkt einem Worddokument übergeben.

Gibt es als Alternative auch die Möglichkeit, die Formatierung Schritt für Schritt aus dem RichEdit auszulesen und dann den Text mitsamt der Formatierungen mit Hilfe der WordApplication-Anweisungen
Delphi-Quellcode:
WordApplication1.Selection.Font.Name := 'Arial';
WordApplication1.Selection.Font.Bold:=integer(True);
WordApplication1.Selection.Font.Size:= ...
WordApplication1.Selection.TypeText ...
in das Word-Dokument hineinzuschreiben ?

Ralf

Ralf Stehle 17. Jan 2007 18:10

Re: RichEdit.Text in Word-Document übertragen
 
Ich habe es mit einem einfachen WordApplication.Paste versucht, das funktioniert ja ganz einfach.

Delphi-Quellcode:
RichEdit1.SelectAll;
RichEdit1.CutToClipboard;
WordApplication1.Connect;
WordApplication1.Visible := true;
WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
WordApplication1.Selection.Paste;
WordApplication1.Disconnect;
Wie PasteSpecial aufgerufen wird, habe ich nicht herausgefunden
(in einem Word-Makro sieht das so aus:
Selection.WholeStory
Selection.PasteSpecial Link:=False, DataType:=20,
Placement:=wdInLine, DisplayAsIcon:=False)

ob PasteSpecial aber überhaupt Vorteile bietet, ist mir nicht klar. Was meinst Du mit "Verseuchung" der Zwischenablage eigentlich?

Ralf

marabu 17. Jan 2007 18:39

Re: RichEdit.Text in Word-Document übertragen
 
Paste() nimmt aus mehreren angebotenen Clip-Formaten dasjenige mit dem höchsten Rang. Kann schon gut sein, dass Word da RTF dankbar auswählt.

Mit Verseuchung meine ich den Verstoß gegen die Regel, dass die Zwischenablage nur interaktiv (vom Programmbenutzer) verwendet werden sollte. Es kann ja sonst leicht vorkommen, dass dieser einen wichtigen Text ausgeschnitten hat und der ist dann weg, wenn dein Programm loslegt.

Freundliche Grüße


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