AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TRtfLabel - Label zur Darstellung von RTF
Thema durchsuchen
Ansicht
Themen-Optionen

TRtfLabel - Label zur Darstellung von RTF

Ein Thema von Flocke · begonnen am 31. Mär 2006 · letzter Beitrag vom 18. Apr 2018
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Flocke
Flocke
Registriert seit: 9. Jun 2005
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
  • kann alle Features von RichEdit 3.0 bzw. 4.1 darstellen
  • kann in das RTF eingebettete Bilder und OLE-Objekte darstellen
  • unterstützt einen transparenten Hintergrund
  • kann von 2% bis 6400% zoomen (update 1.3)
  • kann seine Größe automatisch an den Inhalt anpassen
  • hat kein Fensterhandle, ist also ein Nachfahr von "TControl"
  • bietet keine Editier-Funktionalität, es dient ausschließlich der Anzeige
  • bietet über die ITextDocument-Schnittstelle die Möglichkeit, den Inhalt programmiert zu verändern (update)
Hier findet ihr Screenshots einer der Beispielanwendung (75 KiB) - man sieht oben den RTF-Quelltext, der an "Caption" zuweisen wurde, und unten das Ergebnis.

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
  • Kleinen Bug korrigiert, der bei gleichzeitiger Benutzung von WordWrap und AutoSize mit Texten, die nach rechts ausgerichtete Absätze enthielten zu einer Endlosschleife führte.
  • Diverse kosmetische Korrekturen.

19.08.2006: Update auf die Version 1.3
  • Bug bei der Darstellung von Bildern/Objekten auf älteren Systemen bereinigt
  • Zooming eingebaut
  • Funktion "DrawRtfText" eingebaut
  • Property-Editor für TRtfEdit.Caption

27.02.2007: Update auf die Version 1.3b
  • Parametertypen von "DrawRichText" geändert.
  • Support für Delphi 3, 5 und 6 hinzugefügt, für Delphi 3 nochmal Dank an Lannes für seine Vorarbeit.
    Delphi 3 benötigt einen kleinen manuellen Eingriff (die $EXTERNALSYM-Dinger müssen in drei Dateien mit "Suchen und Ersetzen" geändert werden), läuft dann aber ohne Schwierigkeiten.
  • Packages für die einfache Installation hinzugefügt.

01.03.2007: Update auf die Version 1.3c
  • Jetzt mit vollständigem Support für Delphi 3 und 4, es sollte jetzt also mit allen Version ab Delphi 3 funktionieren
Angehängte Dateien
Dateityp: zip rtflabel_1.3c_143.zip (107,4 KB, 201x aufgerufen)
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
 
Benutzerbild von Flocke
Flocke

 
Delphi 10.2 Tokyo Professional
 
#11
  Alt 29. Aug 2006, 08:57
Zitat von Lannes:
muss schon sagen, tolles Teil
Danke für das Lob

Zitat von Lannes:
Mit ein paar Änderungen funktioniert es auch mit Delphi 3
Kannst du mir die Änderungen zukommen lassen? Ich habe selbst kein D3.
Volker
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

 
Delphi 3 Professional
 
#12
  Alt 29. Aug 2006, 23:01
Hallo,
Zitat von Flocke:
Kannst du mir die Änderungen zukommen lassen? Ich habe selbst kein D3.
werde es noch etwas testen, könnte sein das ich irgendwelche Fehler eingebaut habe.
Dann, nach Kommentierung der Änderungen schicke ich es Dir zu.
  Mit Zitat antworten Zitat
Florian H

 
Delphi 6 Professional
 
#13
  Alt 30. Aug 2006, 00:35
Zitat von Flocke:
[...]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)[...]
Mit Transparenz oder ohne?
Sprich wenn da drunter schon ein Bild ist und ich da draufzeichne.. ist dann da n weißer Balken unter dem Text oder hübscherweise nur der Text (ggf. sogar mit Alphachannel-Transparenz drübergezeichnet -> weiche Kanten)?
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

 
Delphi 10.2 Tokyo Professional
 
#14
  Alt 30. Aug 2006, 08:03
Zitat von Florian H:
Mit Transparenz oder ohne?
Transparent natürlich (bis auf die Stellen wo explizit eine Hintergrundfarbe angegeben wird). Weichzeichnen kann das Ding aber nicht, es ist eher ein direkter DrawText-Ersatz für formatierten Text.
Volker
  Mit Zitat antworten Zitat
Florian H

 
Delphi 6 Professional
 
#15
  Alt 4. Sep 2006, 12:59
Ich bin leicht verwirrt, "TTextFormat" ist nicht definiert beim Versuch, die TDrawRTFText-Unit zu verwenden... es gibt ja ein TTextFormat bei den CLX TTextBrowsern bzw den CLX-RTF-Units, aber die sehen TTextFormat nicht als Set, also ist da wohl auch ein anderes gemeint?
Was tu ich jetzt, damit es funktioniert?

EDIT: naja, ok, in der readme steht, sie wird in der graphics.pas deklariert... wird sie aber net bei mir?

EDIT2: Hm, ok, Delphi6 kennt das offenbar noch nicht.. hab ich trotzdem ne Chance, das zum Laufen zu bekommen, d.h. kann man die Deklaration von TTextformat irgendwie irgendwo rauskopieren aus ner Delphi-Version >7 ?
Kann mir diese deklaration vielleicht jemand kopieren bitte?

EDIT3: OK, war nicht wirklich schwer wohl.. hab mir selber eine gebastelt, danke.. nun nur noch zum Laufen bringen

EDIT4: Na super, ich habs.. damit verliert dieses Posting völlig seinen sinn, aber okay^^
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

 
Delphi 10.2 Tokyo Professional
 
#16
  Alt 4. Sep 2006, 14:06
Sorry, bin heute nicht oft online, da ich viel zu tun habe.

Ich hab' alles nur bis runter auf Delphi 7 getestet. In der nächsten Version werden die Konstanten mit drin sein und mit Hilfe von Lannes dann auch bis D3 runter kompatibel.
Volker
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

 
Delphi 10.2 Tokyo Professional
 
#17
  Alt 27. Feb 2007, 16:56
Update auf die Version 1.3b (siehe ganz oben).
Volker
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

 
Delphi 10.2 Tokyo Professional
 
#18
  Alt 1. Mär 2007, 12:16
Update auf die Version 1.3c (siehe ganz oben).

Sorry für das Update-Flooding
Volker
  Mit Zitat antworten Zitat
ThYpHoOn

 
Delphi 5 Enterprise
 
#19
  Alt 20. Jan 2011, 12:34
Hi Leute,

wollte nur kurz drauf hinweisen das es mittlerweile version 1.3d gibt:
http://flocke.vssd.de/files/rtflabel_1.3d.zip

Leider hat diese neuere Version kein DocHeight property mehr :S
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#20
  Alt 20. Jan 2011, 12:38
Danke. Am Besten du ergänzt deinen 1. Beitrag entsprechend
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 22:07 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