AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Rave mit DelphiXE2 und Richedit/RTF [gelöst]
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Keldorn · begonnen am 24. Jan 2012
Antwort Antwort
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

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

  Alt 24. Jan 2012, 18:40
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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  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 04:17 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