Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Richedittext nach Richedit ? (https://www.delphipraxis.net/65020-richedittext-nach-richedit.html)

Vader 11. Mär 2006 10:02


Richedittext nach Richedit ?
 
hallo,

wie kann ich einen richedittext in ein anderes richedit laden ?
mfg vader

fkerber 11. Mär 2006 10:08

Re: Richedittext nach Richedit ?
 
Hi!

Wie wärs mit einem Stream? Es gibt doch SaveToStream und LoadFromStream, oder?


Ciao Frederic

PierreB 11. Mär 2006 10:08

Re: Richedittext nach Richedit ?
 
Delphi-Quellcode:
Richedit2.Lines.Add(Richedit1.Text);
:mrgreen:

Vader 11. Mär 2006 11:05

Re: Richedittext nach Richedit ?
 
hallo,

Delphi-Quellcode:
Richedit2.Lines.Add(Richedit1.Text);
das funzt, aber ich hab jetzt ein problem, ich habe das eine richedit auf der form1 und das andere
richedit auf der form2, wie kann ich jetzt den text von richedit1 ( form1 ) zu richedit 2 (form 2 )
laden ?

mfg vader

Matze 11. Mär 2006 11:10

Re: Richedittext nach Richedit ?
 
Einfach die Units einbinden (uses Unit2) und über

Delphi-Quellcode:
Form2.RichEdit.
darauf zugreifen.

Vader 11. Mär 2006 12:27

Re: Richedittext nach Richedit ?
 
hallo,
danke, das schaut gut aus !
mfg vader

Vader 11. Mär 2006 13:27

Re: Richedittext nach Richedit ?
 
upps,

es funzt, aber jetzt habe ich den text in den einen richedit formatiert ( eine zeile schriftfarbe "rot" ),
und wenn ich

Delphi-Quellcode:
form2.Richedit1.Lines.Add(Richedit1.Text);
ausführe, nimmt die formatierung nicht zum anderen richedit mit, oje, ist das irgenwie möglich ?
mfg vader

fkerber 11. Mär 2006 13:43

Re: Richedittext nach Richedit ?
 
HI!

Versuchs mal mit den Streams.


Ciao Frederic

mOzZzI 11. Mär 2006 13:51

Re: Richedittext nach Richedit ?
 
wenn alles Rot ist machs halt einfach mit:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.Font.Color:=clRed;
end;
oder doch nicht *grübel*

Vader 11. Mär 2006 13:54

Re: Richedittext nach Richedit ?
 
hallo,

nein es ist nicht alles rot, hast du ein beispiel mit den streams ?
mfg vader

mOzZzI 11. Mär 2006 13:57

Re: Richedittext nach Richedit ?
 
Zitat:

Zitat von Vader
hallo,

nein es ist nicht alles rot, hast du ein beispiel mit den streams ?
mfg vader

Da gibts ein gutes Tut!

http://www.dsdt.info/tutorials/streams/

Grüße Philipp

marabu 11. Mär 2006 14:47

Re: Richedittext nach Richedit ?
 
Alternativ geht es auch über TOM: klick

Grüße vom marabu

Vader 11. Mär 2006 19:01

Re: Richedittext nach Richedit ?
 
hallo,

von einen richedit zu einen anderen richedit mit stream ist kein problem, aber ich möchte von mehreren
richedit's ein savestream machen und diesen datenstream dann in ein einziges richedit wieder laden und
das geht nicht

er speichert die einzelnen texte von 3 richedit's, das klappt !
Delphi-Quellcode:
procedure TForm1.saveclick(Sender: TObject);
var Stream: TFileStream;
begin
try
  if SaveDialog1.Execute then
   begin
    try
     Stream := TFileStream.Create(SaveDialog1.FileName, fmCreate or fmShareExclusive);
     RichEdit1.Lines.SaveToStream(Stream);
     RichEdit2.Lines.SaveToStream(Stream);
      RichEdit3.Lines.SaveToStream(Stream);
    finally
     Stream.Free;
     Stream := nil;
    end;
   end;
except
  Form1.Close;
end;
end;
aber er ladet die 3 texte nicht in ein einzelnes richedit zurück, sondern nur den ersten stream (RichEdit1.Lines.SaveToStream(Stream)


Delphi-Quellcode:
procedure TForm2.ladenClick(Sender: TObject);
var Stream: TFileStream;
begin
try
  if OpenDialog1.Execute then
   begin
    try
     Stream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite);
     RichEdit1.Lines.LoadFromStream(Stream);
         finally
     Stream.Free;
     Stream := nil;
    end;
   end;
except
  Form1.Close;
end;
end;
geht das überhaupt ?
mfg vader

marabu 11. Mär 2006 19:49

Re: Richedittext nach Richedit ?
 
Hallo Vader.

Zitat:

Zitat von Vader
ich möchte von mehreren richedit's ein savestream machen und diesen datenstream dann in ein einziges richedit wieder laden und das geht nicht

Stimmt.

Zitat:

Zitat von Vader
geht das überhaupt?

Nein.

Der Hintergrund ist, dass eine RTF-Datei einen Aufbau hat, der eine einfache Verkettung nicht zulässt. Genau das versuchst du aber mit deinen Streams.

Grüße vom marabu

Vader 11. Mär 2006 19:52

Re: Richedittext nach Richedit ?
 
gibt es eine andere lösung ?
mfg vader

Flare 11. Mär 2006 19:53

Re: Richedittext nach Richedit ?
 
Zitat:

Delphi-Quellcode:
if SaveDialog1.Execute then
   begin
    try
     Stream := TFileStream.Create(SaveDialog1.FileName, fmCreate or fmShareExclusive);
     RichEdit1.Lines.SaveToStream(Stream);
     RichEdit2.Lines.SaveToStream(Stream);
      RichEdit3.Lines.SaveToStream(Stream);
    finally
     Stream.Free;
     Stream := nil;
    end;
   end;
Delphi-Quellcode:
if OpenDialog1.Execute then
   begin
    try
     Stream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite);
     RichEdit1.Lines.LoadFromStream(Stream);
         finally
     Stream.Free;
     Stream := nil;
    end;
   end;

Wenn du es so machst, wieso machst du dann nicht gleich ne Datei draus, keinen Stream. Ich meine du speicherst doch den Stream ab, rufst ihn also nicht gleich wieder ab. Ich würde es mal mit einer Datei versuchen.

Mfg, Flare

marabu 11. Mär 2006 20:07

Re: Richedittext nach Richedit ?
 
Zitat:

Zitat von Vader
gibt es eine andere lösung ?

Ja sicher - hatte ich in Beitrag #12 verlinkt.

marabu

Vader 11. Mär 2006 20:18

Re: Richedittext nach Richedit ?
 
hallo,

habe probleme mit der unit tom, compilert nicht !
mfg vader

marabu 11. Mär 2006 20:25

Re: Richedittext nach Richedit ?
 
Du hast in der Eile vergessen den Compiler-Fehler mitzuteilen.

marabu

Vader 11. Mär 2006 20:30

Re: Richedittext nach Richedit ?
 
[Fehler] tom.pas(64): Ungültige Compileranweisung: 'VARPROPSETTER'
[Fataler Fehler] Unit1.pas(8): Verwendete Unit 'TOM.pas' kann nicht compiliert werden
mfg vader

Vader 11. Mär 2006 20:31

Re: Richedittext nach Richedit ?
 
hallo flare,

wie soll ich eine datei machen, wie meinst du das, eine .txt datei oder was ?
mfg vader

marabu 11. Mär 2006 20:44

Re: Richedittext nach Richedit ?
 
Vader, wenn du deine Delphi-Version in deinem Profil einträgst, dann erübrigen sich Rückfragen wie: Mit welcher Delphi-Version arbeitest du?

Wenn ich dein Problem im Zusammenhang mit deinen anderen threads der jüngeren Zeit sehe, dann komme ich zu dem Schluss, dass auch dein aktuelles Problem hausgemacht ist. Wenn es immernoch um die Überleitung nach Excel geht, dann gibt es eigentlich keinen Grund für die Datenübernahme aus einem oder mehreren RichEdit Controls. Alle Formatierungen lassen sich über Excel Automation erledigen. Aber vielleicht arbeitest du ja gerade an etwas ganz anderem.

marabu

Vader 11. Mär 2006 20:58

Re: Richedittext nach Richedit ?
 
hallo,

das ist schon ein anderes project, hat mit excel nichts zu tun !
mfg vader

Flare 11. Mär 2006 22:21

Re: Richedittext nach Richedit ?
 
Zitat:

wie soll ich eine datei machen, wie meinst du das, eine .txt datei oder was ?
Ja, ich meinte so etwas wie eine .txt-Datei, wobei die Endung egal sein dürfte. :-D


Flare

Brüggendiek 12. Mär 2006 05:36

Re: Richedittext nach Richedit ?
 
Hallo Vader!

Wenn Du einen RichEdit-Text in ein anderes RichEdit einfügen willst, gehe doch über TStringStream!

Delphi-Quellcode:
var
  stream: TStringStream;

begin
  stream := TStringStream.Create ('');
  try
    reQuelle.Lines.SaveToStream (stream);
    reZiel.SelText := stream.DataString;
  finally
    stream.Free;
  end;
end;
und der Inhalt des reQuelle ist an der aktuellen Position in reZiel. Vorher natürlich SelStart auf die Einfügeposition und SelLength auf 0 setzen - oder den passenden Wert, wenn der eingefügte Text etwas ersetzen soll.

Befindet sich der einzufügende Text in einer Datei, muß diese in einen FileStream eingelesen und in den StringStream kopiert werden.

(der Source ist direkt ins Forum getippelt, also keine Haftung für TappsFauler!)

Gruß

Dietmar Brüggendiek

Vader 12. Mär 2006 07:29

Re: Richedittext nach Richedit ?
 
hallo,

mit der .txt datei , das funzt nicht !
mfg vader

Vader 12. Mär 2006 08:29

Re: Richedittext nach Richedit ?
 
hallo Brüggendiek,
wenn du den beitrag #13 liest, will ich ja von mehreren richedit's die daten in ein anderes einziges richedit
laden, meinst du dein code kann das , ich werd aus dem code nicht schlau ?
mfg vader

marabu 12. Mär 2006 08:57

Re: Richedittext nach Richedit ?
 
Hallo Vader,

die Unit TOM aus dem von mir angegebenen Archiv wurde mit D7 erstellt. Erstelle sie mit TLIBIMP für dein D6, dann sollte sie sich auch übersetzen lassen. Formatierte Texte aus verschiedenen RichEdit Controls kannst du dann so angehen:

Delphi-Quellcode:
uses
  TOM,
  RichEdit,
  RichOle;

procedure RichAppend(reSource, reTarget: TRichEdit);
var
  u: IUnknown;
  reoSource, reoTarget: IRichEditOle;
  tdSource, tdTarget: ITextDocument;
  trSource, trTarget: ITextRange;
begin
  SendMessage(reSource.Handle, EM_GETOLEINTERFACE, 0, Integer(@u));
  u.QueryInterface(IID_IRICHEDITOLE, reoSource);
  tdSource := reoSource as ITextDocument;
  trSource := tdSource.Range(0, MaxInt);

  SendMessage(reTarget.Handle, EM_GETOLEINTERFACE, 0, Integer(@u));
  u.QueryInterface(IID_IRICHEDITOLE, reoTarget);
  tdTarget := reoTarget as ITextDocument;
  trTarget := tdTarget.Range(MaxInt, MaxInt);
 
  trTarget.FormattedText := trSource.FormattedText;
end;
Grüße vom marabu

Vader 12. Mär 2006 09:12

Re: Richedittext nach Richedit ?
 
hallo marabu,
[/quote] Erstelle sie mit TLIBIMP für dein D6, dann sollte sie sich auch übersetzen lassen.[quote]

wie geht das ?
mfg vader

marabu 12. Mär 2006 09:17

Re: Richedittext nach Richedit ?
 
Hilft dir das?

Code:
set d6=c:\programme\borland\delphi6
set re20=%windir%\system32\riched20.dll
%d6%\bin\tlibimp -Fe- -D%d6%\imports %re20%
set d6=
set re20=
marabu

Vader 12. Mär 2006 09:32

Re: Richedittext nach Richedit ?
 
upps,

verdammt das ist zu hoch für mich,kann überhaupt nicht's damit anfangen !
mfg vader

marabu 12. Mär 2006 09:47

Re: Richedittext nach Richedit ?
 
Öffne ein Konsolfenster und führe die Befehle einzeln aus - oder schreibe sie in eine Datei TOM.CMD und führe diese aus. Die Pfadnamen musst du an deine Verhältnisse anpassen.

marabu

Vader 12. Mär 2006 10:03

Re: Richedittext nach Richedit ?
 
hallo marabu,

ich habe auch delphi 2005 personal auf meiner kiste laufen, geht das dort ?
mfg vader

marabu 12. Mär 2006 10:13

Re: Richedittext nach Richedit ?
 
Das sollte so oder ähnlich mit jedem Delphi gehen. Was geht den bei D6 nicht? Gibt es Fehlermeldungen?

marabu

Vader 12. Mär 2006 15:35

Re: Richedittext nach Richedit ?
 
nein, du hast mich falsch verstanden, ich werde es auf delphi 2005 personal probieren zu kompilieren
die unit tom
mfg vader

Brüggendiek 13. Mär 2006 04:41

Re: Richedittext nach Richedit ?
 
Hallo Vader!

Zitat:

Zitat von Vader
wenn du den beitrag #13 liest, will ich ja von mehreren richedit's die daten in ein anderes einziges richedit
laden, meinst du dein code kann das , ich werd aus dem code nicht schlau ?

Bei mir klappt das Einfügen in ein Richedit (ich lese allerdings von Datei und kopiere die in einen StrinStream) bestens.
Warum probierst Du es nicht einfach aus und schaust die entsprechenden Dinge in der OH nach?
Kleiner Tipp: Den StringStream für jedes RichEdit neu erstellen und die Teile rückwärts (also den letzten zuerst) einfügen, dann kommst Du mit SelStart:=0 ohne langes Suchen auf die Einfügestelle.

Gruß

Dietmar Brüggendiek

Flocke 13. Mär 2006 08:12

Re: Richedittext nach Richedit ?
 
Eine ganz ähnliche Frage gab's hier schon einmal (inkl. Lösung).

Vader 13. Mär 2006 17:03

Re: Richedittext nach Richedit ?
 
hallo Brüggendiek ,

du schreibst
Zitat:

Den StringStream für jedes RichEdit neu erstellen und die Teile rückwärts (also den letzten zuerst) einfügen, dann kommst Du mit SelStart:=0 ohne langes Suchen auf die Einfügestelle.
ich habs so probiert aber ohne erfolg, erliest nur den ersten stream ein
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  stream: TStringStream;

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

Brüggendiek 14. Mär 2006 07:50

Re: Richedittext nach Richedit ?
 
Hallo Vader!

Warum führts Du nicht aus, was ich Dir geraten habe?

Zitat:

Zitat von Vader
hallo Brüggendiek ,

du schreibst
Zitat:

Den StringStream für jedes RichEdit neu erstellen und die Teile rückwärts (also den letzten zuerst) einfügen, dann kommst Du mit SelStart:=0 ohne langes Suchen auf die Einfügestelle.

So sollte es gehen:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  stream: TStringStream;

begin
  richedit3.SelStart := 0;  //diese beiden Anweisungen, damit am Anfang eingefüg wird
  richedit3.SelLength := 0; //Der Anwender könnte ja die Position verstellt haben

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

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

Dietmar Brüggendiek

Vader 14. Mär 2006 17:20

Re: Richedittext nach Richedit ?
 
hallo Brüggendiek,

supertoll, so funzt das!
herzlichen dank !
mfg vader


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.
Seite 1 von 2  1 2      

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