Delphi-PRAXiS

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/)
-   -   D10.3 Probleme mit Richedit (https://www.delphipraxis.net/209726-d10-3-probleme-mit-richedit.html)

cckLoud 14. Jan 2022 19:17

D10.3 Probleme mit Richedit
 
Hi, ich hoffe mit meinem Problem bin ich in dieser Gruppe richtig...

Ich portiere gerade meine Anwendung von d7 auf d10.3. Dabei kommt es zu einem Problem beim Richedit, das sich weigert, formatierten Text anzuzeigen und immer nur den rtf-Code zeigt.

Hintergrund: es wird ein Word-Dokument aus vielen Bausteinen erstellt, die in rtf abgefasst und in einer Datenbank gespeichert sind. Zum Generieren werden die Bausteine aus der DB gelesen, aufbereitet und ins Word-Dokument kopiert.
Zur Pflege der Bausteine gibt es einen Diialog, der die vorhandenen Bausteine aus der DB lesen kann und in einem RichEdit anzeigt. Und hier ist das Problem: In D10.3 wird mit dem Code, der unter D7 einwandfrei funktioniert, nicht der aufbereitete Text angezeigt, sondern der RTF-Code...

Der zugrunde liegende Code sieht (schematisch) so aus:

Code:
...
var SelectSQL: TSelectSQL; HlpStr: ansistring;    
...
//TSelectSQL ist ein eigenes Tool, das den DB-Zugriff übernimmt
      SelectSQL := TSelectSQL.create('RTFTexte');
      try
         SelectSQL.AddAllFields;
         SelectSQL.WhereClause := 'TextID = ' + XEditBausteinnummer.AsString + ' and Nummer = 0';
         SelectSQL.OpenSQL(ADOQuery1)
      finally
         SelectSQL.Free;
      end;
      HlpStr := ADOQuery1.fieldbyname('TextTeil').AsString;
      RichEditListenBaustein.Text := HlpStr;
...
Im Richedit wird dann Folgendes angezeigt:

{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\de ff0\stshfdbch31505\stshfloch31506\stshfhich31506\s tshfbi0\deflang1031\deflangfe1031\themelang1031\th emelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\flomajor\f31500\fbi di \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
... usw ...

Also der rtf-Code. Das bleibt auch so, wenn ich HlpString auf "String" ändere.

Unter D7 wird mit dem identischen Code angezeigt:

1 Wahl der Wertermittlungsverfahren
Ziel jeder Verkehrswertermittlung ist nach § 194 BauGB ein marktgerechter Preis, der Verkehrswert / Marktpreis. Dieser wird durch den Preis bestimmt, der in dem Zeitpunkt, auf den sich die Wertermittlung bezieht, im gewöhnlichen Geschäftsverkehr nach den rechtlichen Gegebenheiten und tatsächlichen Eigenschaften, der sonstigen Beschaffenheit und der Lage des Grundstückes oder des sonstigen Gegenstandes der Wertermittlung ohne Rücksicht auf ungewöhnliche oder persönliche Verhältnisse zu erzielen wäre.
... usw ...

Also so wie es sein soll!

Die Einstellungen des RichEdit sind gleich, hab ich geprüft.

Was hat sich geändert zwischwn D7 und D10.3?

mjustin 14. Jan 2022 21:10

AW: D10.3 Probleme mit Richedit
 
https://stackoverflow.com/questions/...into-trichedit

LoadFromStream sollte funktionieren. Mit alten Delphi Versionen habe ich auch schon auf diese Weise aus DB RTF eingelesen.

himitsu 14. Jan 2022 23:20

AW: D10.3 Probleme mit Richedit
 
Da ein DataSet existiert, könnte man doch bestimmt auch TDBRichEdit verwenden,

oder man darf gerne mal im TDBRichEdit.LoadMemo (Vcl.DBCtrls.pas) sich was abgucken. :angle2:


Und natürlich gäbe es auch die SuFu, die man hätte nutzen können.
https://www.delphipraxis.net/167329-...ichern-db.html
https://www.delphipraxis.net/65443-t...romstream.html
https://www.delphipraxis.net/26267-r...-auslesen.html
...
...
...
...

cckLoud 15. Jan 2022 12:17

AW: D10.3 Probleme mit Richedit
 
Ich hab den String jetzt in einen Stringstream verpackt, jetzt gehts. Danke für die Hilfe!

@himitsu: Das würde hier nicht funktionieren, da "HlpStr := ADOQuery1.fieldbyname('TextTeil').AsString;" vereinfacht war und der String aus der DB erst noch aufbereitet wird... Ausserdem hege ich eine (persöhnliche) Abneigung gegen die DB.Controls und benutze die äusserst ungern. In der D7-Version waren noch ein paar DBGrids, aber die sind in der D10-Version ausnahmslos rausgeflogen. Statt dessen habe ich seit längerem eigene Komponenten gebaut, die das alles übernehmen!


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