![]() |
TRtfLabel - Label zur Darstellung von RTF
Liste der Anhänge anzeigen (Anzahl: 1)
Ein paar von euch haben ja schon mitbekommen, dass ich seit einiger Zeit an einem aufgebohrten RichEdit-Control arbeite. Hier schon mal ein Ergebnis vorab:
TRtfLabel Ein Label zur Darstellung von RTF-Text. Das Ding
![]() Auch ganz einfacher RTF-Quelltext ist möglich. Der Text "{\rtf1{Hier ist \b ein\b0 \ul Wort\ul0 unterstrichen.}}" ergibt "Hier ist ein Wort unterstrichen." Zusätzlich gibt's noch eine Unit mit der Funktion DrawRtfText, mit der man formatierten Text in einen Canvas ausgeben kann (ähnlich wie DrawText). (update 1.3) Internes Im Paket mit drin sind auch die aktuellen Übersetzungen der RichEdit-API-Header richedit.h (inkl. Korrekturen und Erweiterungen), richole.h, TOM.h, TextServ.h. Außerdem noch ein allgemeiner Wrapper für Interfaces von "thiscall" nach "stdcall" und zurück sowie eine rudimentäre Delphi-Implementierung von ITextHost. Das war eigentlich der größte Teil der Arbeit - sieht man auch sofort daran, dass RtfLabel.pas selbst nur etwa 600 650 720 Zeilen hat :???:. Testen / Installieren Das Verzeichnis mit den Projektdateien (nicht den Beispielanwendungen) müsst ihr in euren Suchpfad Bibliothekspfad aufnehmen. Danach könnt ihr die Beispielanwendungen direkt übersetzen (Win32), da die Komponente dynamisch erzeugt wird. Für die Installation sucht einfach ein Package eurer Wahl und fügt "RtfLabel.pas" hinzu (dann Installieren bzw. Aktualisieren). Zusätzlich könnt ihr die Datei "RtfLabel_Caption_Editor.pas" einem Entwurfszeitpackage hinzufügen - dann habt ihr einen Editor für die Eigenschaft Caption. (update 1.3) Zur Installation öffnet ihr einfach das Package "RtfLabel_D#.dpk" für eure Delphi-Version und installiert dies. Für Delphi-Versionen ab 7 ist dies immer dasselbe Package (da sich darin nichts geändert hat). (update 1.3c) Für Delphi 3 müsst ihr vorher in den drei Dateien "RichEdit2.pas", "RichOle.pas" und "TextServ.pas" noch den Text "{$EXTERNALSYM" durch "//{$EXTERNALSYM" ersetzen, da Delphi 3 dieses Feature noch nicht unterstützt. Zusätzlich könnt ihr noch das Package "RtfLabel_D#D.dpk" installieren (derselbe Name nur mit einem "D" am Ende), dann habt ihr einen Editor für die Eigenschaft "Caption". (update 1.3b) Ich freue mich auf eure Kommentare, Anmerkungen und Anregungen. P.S.: bitte keine Anfragen nach der Editierfunktionalität - das "große" TRichEdit3 ist noch in Arbeit und wird all das unterstützen. 14.04.2006: Update auf die Version 1.1
19.08.2006: Update auf die Version 1.3
27.02.2007: Update auf die Version 1.3b
01.03.2007: Update auf die Version 1.3c
|
Re: TRtfLabel - Label zur Darstellung von RTF
Update auf die Version 1.1 (siehe oben).
|
Re: TRtfLabel - Label zur Darstellung von RTF
Update auf die Version 1.3 (siehe oben).
|
Re: TRtfLabel - Label zur Darstellung von RTF
Hi,
ist es auch möglich einen Link anzeigen zu lassen? Am besten wäre es wenn jeder Link automatisch eine ID bekommt und man dann auch Events zu weisen kann. Bsp.: Der User klickt Link mit ID1 dann soll form2.show; ausgeführt werden. Das wäre richtig geil. Geht sowas irgendwie? Die Anweisung im RTF könnte ja so aussehen:
Code:
Da sind dann die IDs hardcoded, wäre auch ne Möglichkeit.
{\rtf1{Hier ist \b ein\b0 \ul Wort\ul0 \link unterstrichen\link0 und noch ein \link Link\link1.}}
|
Re: TRtfLabel - Label zur Darstellung von RTF
Ich habe jetzt noch nicht reingeschaut, aber kann die Komponente ein Unicode-Interface und arbeitet damit mit intern mit Widestrings?
|
Re: TRtfLabel - Label zur Darstellung von RTF
@onlinehome:
Das wäre eigentlich mehr, als für was diese Komponente gedacht war. Im Moment reiche ich überhaupt keine Meldungen an die ITextServices-Schnittstelle weiter, so dass die überhaupt nicht mitbekommen würde, dass ein Link geklickt wurde. Evtl. geht es aber sehr einfach (du würdest dann im Event keine ID sondern die URL übergeben bekommen, das wäre dir aber bestimmt auch recht, oder?). @Bernhard Geyer: Die Komponente nutzt intern die Interfaces, die auch der RichEdit-Fensterklasse das Leben einhauchen und die Microsoft gemeinhin als ![]() ![]() ![]() ![]() Ich habe keine speziellen Properties und/oder Methoden für Unicode hinzugefügt, weil in der Eigenschaft "Caption" RTF-Text steht. RTF selbst wird ja normalerweise in 1-Byte-Zeichensätzen codiert und für Unicode-Zeichen muss man dann halt "\u<code>" angeben. Es wäre aber ein leichtes dies nachzuholen (über ITextServices.TxSendMessage / EM_SETTEXTEX und EM_GETTEXTEX), was stellst du dir denn da vor? |
Re: TRtfLabel - Label zur Darstellung von RTF
Zitat:
Zur Komponente, wie diese Momentan ist, kann ich nicht viel sagen. Ich werde sie erst heute Abend testen können. |
Re: TRtfLabel - Label zur Darstellung von RTF
Ist die Komponente für D2006.net oder Win32?
|
Re: TRtfLabel - Label zur Darstellung von RTF
Win32!
|
Re: TRtfLabel - Label zur Darstellung von RTF
Hallo,
muss schon sagen, tolles Teil :thumb: Mit ein paar Änderungen funktioniert es auch mit Delphi 3 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz