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/)
-   -   Delphi TRichEdit - Absatz umrahmen (https://www.delphipraxis.net/121900-trichedit-absatz-umrahmen.html)

taaktaak 6. Okt 2008 20:36


TRichEdit - Absatz umrahmen
 
Moin, Moin.

Ich bin verwirrt :roteyes: und hoffe auf eine Aufklärung hier im Forum

Mir ist bekannt, dass das TRichEdit direkt nur einen begrenzten Funktionsumfang bietet. Schaut man bei MSDN hinein, ist zu erkennen, dass das RichEdit eigentlich viel mehr kann als die VCL zur Verfügung stellt. Unter anderem z.B. auch eine Umrahmung um Absätze oder einen Unterstrich unter einen Absatz.

Bisher war ich davon ausgegangen, dass dieses dann über direkte Verwendung der RichEdit-API realisiert werden kann. Mit dem Versuch einen Absatzrahmen zu erzeugen scheitere ich aber kläglich. Bisher bin ich davon ausgegangen, dass der Fehler bei mir liegt. Nun bin ich aber so richtig irritiert:

Mit WORD habe ich eine Mini-RTF-Datei erstellt. Der Text besteht lediglich aus einem kurzen umrahmten Absatz. Datei als *.rtf gespeichert, wieder geöffnet: WORD zeigt mir einen umrahmten Absatz - na logisch!

Lese ich nun diese Datei in mein Delphi-RichEdit mit *.LoadFromFile() ein, sehe ich auch den Text - allerdings ohne den Rahmen. Offenbar kann ich also weder eine solche Formatierung erzeugen, noch kann TRichEdit eine derart (korrekt?) formatierte Datei anzeigen?

Wieso nicht? Mein Weltbild ist bisher, dass die eigentlichen Funktionalitäten von DLL's bereitgestellt werden, die mit dem Betriebssystem ausgeliefert werden. Warum kann WORD den Text korrekt formatieren und darstellen und das TRichEdit nicht? Verwenden nicht beide die gleichen DLL's?

Bernhard Geyer 6. Okt 2008 20:40

Re: TRichEdit - Absatz umrahmen
 
1, Es gibt diverse DLL die unteschiedliche Versionen von RTF unterstützen. Delphi hat in (ältern?) Versionen nur die alte Version der DLL verwendet.

2, Mit TRichview eine 100% Delphi RTF-Implementierung die keine Probleme mit einer DLL-Hölle hat.

taaktaak 6. Okt 2008 20:49

Re: TRichEdit - Absatz umrahmen
 
Hallo Bernhard.

Vielen Dank für den Link, schaue ich mir an. Aber ...

Zitat:

Delphi hat in (ältern?) Versionen nur die alte Version der DLL verwendet.
Das verstehe ich leider nicht. Wird denn nicht automatisch die aktuelle DLL, die durch Windows bereitgestellt wird, verwendet? Delphi hat doch hierfür keine eigene DLL "mitgebracht" - oder? (Kann da nix entdecken)

Muss denn nicht mein eigener API-Aufruf (automatisch) bei der "richtigen" DLL landen? Also, will damit sagen, ich verstehe das Prinzip der DLL-Nutzung nicht :pale:

edit:
upps....bin kein Mensch, der alles umsonst haben will - aber 189 € sind schon 'ne ganze Menge Geld :shock:

Bernhard Geyer 6. Okt 2008 21:16

Re: TRichEdit - Absatz umrahmen
 
Es gibt riched20.dll und riched32.dll und wie der Name nahe legt ist die riched20.dll die mächtige DLL. Und Delphi bindet nur die ältere riched32.dll ein.

AFAIK hat die Jedi in der JVCL einen moderneren Wrapper der z.B. auch Bilder kann.

taaktaak 6. Okt 2008 21:41

Re: TRichEdit - Absatz umrahmen
 
Ahhh, habe mir jetzt mal RichEdit.pas angesehen, da finde ich im Kopfteil folgendes:
Delphi-Quellcode:
 {$EXTERNALSYM RICHEDIT_CLASSA}
  RICHEDIT_CLASSA      = 'RichEdit20A';    { Richedit2.0 Window Class. }
  {$EXTERNALSYM RICHEDIT_CLASSW}
  RICHEDIT_CLASSW      = 'RichEdit20W';    { Richedit2.0 Window Class. }
  {$EXTERNALSYM RICHEDIT_CLASS}
  RICHEDIT_CLASS = RICHEDIT_CLASSA;
  RICHEDIT_CLASS10A      = 'RICHEDIT';       { Richedit 1.0 }
Ich interpretiere diese Konstanten so, dass damit RichEdit 2.0 unterstützt werden sollte. Wenn ich nun in die RTF-Specifications der Version 1.5 hineinschaue, dann stellt bereits diese Version den gewünschten Absatzrahmen zur Verfügung - seltsam.

Aber:
Ich finde in RichEdit.pas keine Angabe, welche DLL eingebunden wird. Sorry, ist wohl 'ne naive Frage, aber wo findet sich denn diese Angabe?

taaktaak 26. Okt 2008 12:39

Re: TRichEdit - Absatz umrahmen
 
Moin, Moin.
Nach einer kurzen Recherche zum Thema "LineSpacing" kann ich mir heute die Antwort nun selber geben. Zum Thema Borders, BorderWidth etc. finde ich...

Zitat:

This item is only included for compatibility, and may not have any visible effect.
oder
This item is included for compatibility with Word; the rich edit control stores the values but does not use them to display text.
Tja, Pech gehabt. Nix mit Borders&Co. im Standard-RichEdit.


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