Einzelnen Beitrag anzeigen

DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#41

AW: Richedittext nach Richedit ?

  Alt 23. Sep 2015, 18:44
Hallo zusammen,

ich habe mir diesen Threat raus gesucht, weil ich genau wie von "Brüggendiek" beschrieben zwei RichEdit mit Formatierungen in einem dritten zusammen fügen möchte.

Ich habe mich daher an dem Quelltext von "Brüggendiek" orientiert, jedoch bekomme ich ein unerwünschtes Ergebnis. Könnte es sein, dass ich etwas übersehen habe? Alle drei RichEdit haben bei "PlainText" die Einstellung auf "false". Stelle ich diese auf "true" werden beide Texte ohne Formatierung übernommen.

Irgendwie kann ich mir keinen Reim auf die Ausgabe machen, wenn ich diese wie von "Brüggendiek" beschrieben zusammen füge. Was habe ich übersehen?

Ich habe Euch hier einmal meinen kompletten Quelltext gepostet:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    RichEdit2: TRichEdit;
    RichEdit3: TRichEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var
  stream: TStringStream;

begin
  richedit3.SelStart := 0;
  richedit3.SelLength := 0;

  stream := TStringStream.Create ('');
  try
    richedit2.Lines.SaveToStream (stream);
    richedit3.SelText := stream.DataString;
  finally
    stream.Free;
  end;

  richedit3.SelStart := 0;
  richedit3.SelLength := 0;

  stream := TStringStream.Create ('');
  try
    richedit1.Lines.SaveToStream (stream);
    richedit3.SelText := stream.DataString;
  finally
    stream.Free;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  RichEdit1.Clear;
  RichEdit2.Clear;
  RichEdit3.Clear;

  RichEdit1.SelAttributes.Style := [fsBold];
  RichEdit1.SelText := 'BOLD';
  RichEdit1.SelAttributes.Style := [];

  RichEdit2.SelAttributes.Style := [fsItalic];
  RichEdit2.SelText := 'ITALIC';
  RichEdit2.SelAttributes.Style := [];

end;

end.

Wenn ich das "Programm" so ausführe, bekomme ich im RichEdit3 dieses Ergebnis:
richedit3.jpg

Was habe ich übersehen?

LG Micha (aka DieFliege)



Nachtrag:
Ich habe natürlich weiter nach einer Lösung gesucht und dabei rausgefunden, dass es wohl an der "riched32.dll" von Windows liegt. Daher habe ich mich mit der Lösung von Marabu beschäftigt und es damit hin bekommen - Vielen Dank an dieser Stelle an Dich, Marabu.
LG Micha (aka DieFliege)

Geändert von DieFliege (24. Sep 2015 um 10:38 Uhr) Grund: Lösung gefunden
  Mit Zitat antworten Zitat