![]() |
Text aus RichEdit von fremder Anwendung mit Formatierung
Hi,
gibt es eine einfache Möglichkeit den Inhalt eines RichEdit in einer anderen Anwendung von der ich weiß das sie in Delphi geschrieben wurde in ein RichEdit in meiner Anwendung zu kopieren ohne das ich die Formatierungen verliere? Anschließend möchte ich den von mir in meinem RichEdit bearbeiteten Text wieder zurück in das RichEdit der fremden Anwendung schreiben ohne auch hier die Formatierung zu verlieren. Ich habe hier im Forum schon gesucht, aber nichts gefunden was mich irgendwie weiter bringen könnte. Auch habe ich schon ein Beispiel vom SwissDelphiCenter ausprobiert. Welches aber nicht funktioniert da sich das Programm total aufhängt! :wall: Hoffe irgendjemand hatte mal das gleiche Problem und hat eine funktionierende Lösung. Dank Euch schonmal Gruß Markus |
Re: Text aus RichEdit von fremder Anwendung mit Formatierung
Dann zeig doch mal die Lösung aus dem SDC. Oder warum schreibst du nicht dem Autor?
|
Re: Text aus RichEdit von fremder Anwendung mit Formatierung
Hi Luckie,
hier ist ein Link zu der Lösung aus dem SDC: ![]() Nur leider funktioniert diese unter Delphi-7 nicht. Diese Lösung gibts auch noch auf ein paar anderen Seiten mit genau den gleichen Kommentaren, nämlich das es unter Delphi-7 zu Fehlern kommt. Scheinbar ist wegen den Fehlern dem Autor auch nie geschrieben worden bzw. vielleicht hat der Autor auch die Kommentare gelesen aber sein Beispiel nicht verbessert da die paar Leute die Lösung mit dem Stream genommen haben. Was in meinem Fall aber nichts bringt da die beiden RichEdit ja nicht in einer Anwendung sind. Hätte ja sein können das hier im Forum schonmal jemand das gleiche Problem hatte und eine andere Lösung gefunden hat. |
Re: Text aus RichEdit von fremder Anwendung mit Formatierung
Hi Armageddon,
das Handle des fremden Controls musst Du ja eh schon haben, warum gehst Du dann nicht über das Clipboard ran? Da wird das Format doch mit gezogen. Pass aber beim Insert auf die Eigenschaft PlainText (siehe Bsp.) auf:
Delphi-Quellcode:
Have fun, Bernd
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) RichEdit1: TRichEdit; RichEdit2: TRichEdit; Button1: TButton; OpenDialog1: TOpenDialog; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); // Beispieltext speichern. var Memo1: TMemo; begin SaveDialog1.FileName:= 'C:\Temp\Text.rtf'; OpenDialog1.FileName:= SaveDialog1.FileName; Memo1.Create; Memo1.Lines.Add('{\rtf1\ansi\ansicpg1252\uc1 ' //Header mit Codepage + '{\colortbl;\red0\green0\blue0;\red255\green0\blue0;} ' //Farbtabelle + '{Ein }{\ul formatierter}{ }{\b Text}{ in }{\cf2 RTF} ' //Text mit Formatierung + '{\par }}'); //Absatzmarke Memo1.Lines.SaveToFile(OpenDialog.FileName); Memo1.Free; end; procedure TForm1.Button1Click(Sender: TObject); // Beispieltext laden, also das eigentliche Beispiel. begin if OpenDialog1.Execute then begin Richedit1.PlainText:= True; // Format ignorieren RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName); Richedit2.PlainText:= False; // Format behalten RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName); end; end; end. |
Re: Text aus RichEdit von fremder Anwendung mit Formatierung
So,
hab das jetzt mal so gemacht, das Handle des RichEdit hab ich ja:
Delphi-Quellcode:
funktioniert auch ganz gut. Nur was ist wenn das RichEdit einen Inhalt jenseits der 64KB Grenze hat hab ich mir gedacht. Ein bisschen stöbern in der Windows SDK und nach ein bisserl Googlen bin ich auf EM_EXSETSEL gestossen. Wie es da so schön heißt:
SendMessage(AHandle, EM_SETSEL, 0, -1);
SendMessage(AHandle, WM_COPY, 0, 0); RichEdit1.PasteFromClipboard; Zitat:
Zitat:
Hier der Programm-Code:
Delphi-Quellcode:
Müßte doch gehen. Oder?
var
CharRange: TCharRange; begin CharRange.cpMin := 0; CharRange.cpMax := -1; SendMessage(AHandle, EM_EXSETSEL, 0, Longint(@CharRange)); SendMessage(AHandle, WM_COPY, 0, 0); RichEdit1.PasteFromClipboard; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz