AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Text aus RichEdit von fremder Anwendung mit Formatierung
Thema durchsuchen
Ansicht
Themen-Optionen

Text aus RichEdit von fremder Anwendung mit Formatierung

Ein Thema von Armageddon · begonnen am 2. Jul 2005 · letzter Beitrag vom 3. Jul 2005
Antwort Antwort
Benutzerbild von Armageddon
Armageddon

Registriert seit: 30. Mär 2003
Ort: Wilflingen
158 Beiträge
 
#1

Text aus RichEdit von fremder Anwendung mit Formatierung

  Alt 2. Jul 2005, 17:27
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!

Hoffe irgendjemand hatte mal das gleiche Problem und hat eine funktionierende Lösung.


Dank Euch schonmal
Gruß Markus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Text aus RichEdit von fremder Anwendung mit Formatierung

  Alt 2. Jul 2005, 17:38
Dann zeig doch mal die Lösung aus dem SDC. Oder warum schreibst du nicht dem Autor?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Armageddon
Armageddon

Registriert seit: 30. Mär 2003
Ort: Wilflingen
158 Beiträge
 
#3

Re: Text aus RichEdit von fremder Anwendung mit Formatierung

  Alt 2. Jul 2005, 22:17
Hi Luckie,

hier ist ein Link zu der Lösung aus dem SDC:
Der SDC-Artikel

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.
  Mit Zitat antworten Zitat
Xanadu

Registriert seit: 8. Mai 2005
Ort: Schwäbisch Gmünd
20 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Text aus RichEdit von fremder Anwendung mit Formatierung

  Alt 3. Jul 2005, 03:05
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:
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.
Have fun, Bernd
  Mit Zitat antworten Zitat
Benutzerbild von Armageddon
Armageddon

Registriert seit: 30. Mär 2003
Ort: Wilflingen
158 Beiträge
 
#5

Re: Text aus RichEdit von fremder Anwendung mit Formatierung

  Alt 3. Jul 2005, 14:04
So,

hab das jetzt mal so gemacht, das Handle des RichEdit hab ich ja:

Delphi-Quellcode:
SendMessage(AHandle, EM_SETSEL, 0, -1);
SendMessage(AHandle, WM_COPY, 0, 0);
RichEdit1.PasteFromClipboard;
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:

Zitat:
In a rich edit control, if the selection is not entirely contained in the first 64K, use the message EM_EXSETSEL.
Jetzt hab ich folgendes versucht aber irgendwie klappt das nicht. Was mach ich da für nen Fehler? Ich will den gesamten Text kopieren. Laut Beschreibung müßte der gesamte Text selektiert werden wenn

Zitat:
If the cpMin and cpMax members are equal, the range is empty. The range includes everything if cpMin is 0 and cpMax is - 1.
Aber irgenwie passiert da gar nichts.

Hier der Programm-Code:

Delphi-Quellcode:
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;
Müßte doch gehen. Oder?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 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