Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Rave mit DelphiXE2 und Richedit/RTF [gelöst] (https://www.delphipraxis.net/165979-rave-mit-delphixe2-und-richedit-rtf-%5Bgeloest%5D.html)

Keldorn 24. Jan 2012 17:40

Rave mit DelphiXE2 und Richedit/RTF [gelöst]
 
Hallo,

ich habe stundenlang gegoogelt und kaum was gefunden. Da ich bei einem Schlag auf den Hinterkopf + Gedächtnisverlust meinerseits immer zuerst hier im Forum suchen würde und vielleicht auch andere danach suchen, stelle ich mal Frage+Antwort rein.

Mit DelphiXE2 funktionieren meine Ravereports nicht mehr, ich übertrage ein Richedit per Custommconnection und erhalte im Ravereport nur chinesische Schriftzeichen oder andere Hyroglyphen.
Ich habe diverse Tipps gelesen, das man noch mit savetostream(xxx,Tendoding.utf8) arbeiten soll, das hat alles nicht funktioniert.
Folgendes ging jetzt:

der Text muß als dtstring (nicht dtmemo) und über den Umweg einer Tstringlist übertragen werden.
Delphi-Quellcode:
procedure TForm1.RvCustomConnectionGetCols(
  Connection: TRvCustomConnection);
begin
  //als dtstring, nicht dtmemo !!!
  Connection.WriteField('RichEditRTF', dtstring, 30, '','');
end;

procedure TForm1.RvCustomConnectionGetRow(Connection: TRvCustomConnection);
Var memstream:Tmemorystream;
    sl:Tstrings;
begin
  MemStream := TMemoryStream.Create;
   try
     RichEdit1.Lines.SaveToStream(memstream);
     //das hier hätte vorher gereicht (in Verbindung mit dtmemo):
     //Connection.WriteBlobData(MemStream.Memory^, MemStream.Size);

     //Umweg über eine Stringlist sl.text:=Richedit.lines.text reicht nicht
     sl:=TStringList.create;
     try
       memstream.Position:=0;
       sl.LoadFromStream(memstream);
       Connection.WriteStrData(sl.Text,'');
     finally
       sl.Free;
     end;
   finally
     MemStream.Free;
   end;
end;
Irgendwo (finde leider die Seite nicht mehr) war noch der Vorschlag, das man das Richedit wie früher (dtmemo+Blobdata) übergibt, im Ravereport eine 2. Datamemo setzt und das erste das auf unsichtbar setzt.
ins onbeforeprint des 2. memos dann
Code:
self.text:=copy( datamemo1.text, 0, round( length( datamemo1.text )/2));
das ist mir aber dann doch zu viel Gefrickel.

Wenn noch jemand einen Hinweis hat, nehme ich den auch dankbar an :-)

Gruß Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 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