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:
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)