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      
JYPDWhite

Registriert seit: 29. Sep 2010
28 Beiträge
 
#1

AW: TRtfLabel - Label zur Darstellung von RTF

  Alt 4. Feb 2011, 16:28
Hallo Flocke,


erstmal wollte ich sagen dass ich das RTFLabel echt super finde.
Endlich kann man mal ein Label ein bisschen Layout einhauchen. Nun zu meinem Problem.
Ich habe ein RTFLabel wo der Text rechtsbündig sein soll. Aber zur Laufzeit wird der Text Linksbündig angezeigt.
Das hier ist der Text der in dem Label drinne steht:
Code:
{\rtf1\ansi\deff0{\fonttbl{\f0\fswiss\fcharset0 Arial;}} {\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\qr\lang1031\f0\fs20 %s*10\super 3\par }
  Mit Zitat antworten Zitat
JYPDWhite

Registriert seit: 29. Sep 2010
28 Beiträge
 
#2

AW: TRtfLabel - Label zur Darstellung von RTF

  Alt 14. Jun 2017, 13:58
Hat es hier schon jemand geschafft TRtfLabel auf 64 Bit zu verwenden?
Ich probiere das gerade und bekomme immer folgende Exception:

Zitat:
Im Projekt Project5.exe ist eine Exception der Klasse $C0000005 mit der Meldung ' c0000005 ACCESS_VIOLATION' aufgetreten.
Ich habe ein Beispielprojekt im Anhang wo ich das ganze mal nicht als Komponente für die IDE installieren muss sondern einfach von TRTFLabel eine Instanz erzeuge.

Zur Sicherheit habe ich auch die TLB für die msftedit.dll neu erzeugt aus der 64 Bit Version der DLL(RichTom.pas, die alte Version ist auch im Zip mit Unterstrich am Anfang).

Hat jemand eine Idee was hier schief läuft?
Der Aufruf von TRTFLabel.Create verhält sich bei 64Bit anders als in 32 Bit (andere Funktionen werden aufgerufen), deswegen pase ich hier auch mal beide Stacktraces.
Der 64 Bit Stacktrace geht genau bis zu der Zeile bis dann die Access_Violation auftritt.

Zitat:
System._IntfClear(Pointer(nil) as IInterface)
DelphiTextServ.TTextServices.CreateEx([])
DelphiTextServ.TTextServices.Create
RtfLabel.TLabelTextServices.Create($24BA270)
RtfLabel.TCustomRtfLabel.Create($24B2C20)
Unit5.TForm5.FormCreate($24B2C20)
Vcl.Forms.TCustomForm.DoCreate
Vcl.Forms.TCustomForm.AfterConstruction
System._AfterConstruction($24B2C20)
Vcl.Forms.TCustomForm.Create($24D0DB0)
Vcl.Forms.TApplication.CreateForm(TComponentClass( $5A3CF0),(no value))
Project5.Project5
:0000000076D059CD ; C:\WINDOWS\system32\kernel32.dll
:0000000076F3A561 ; ntdll.dll
32Bit:
Zitat:
DelphiTextServ.TTextServices.TxGetPropertyBits(646 3,0)
:6b9bb324 ; C:\WINDOWS\SysWOW64\MSFTEDIT.DLL
:6b9bb220 MSFTEDIT.CreateTextServices + 0x52
DelphiTextServ.TTextServices.CreateEx([])
DelphiTextServ.TTextServices.Create
RtfLabel.TLabelTextServices.Create($1074C90)
RtfLabel.TCustomRtfLabel.Create($1075CC0)
Unit5.TForm5.FormCreate($1075CC0)
:004fec6f TCustomForm.DoCreate + $37
:004fe8b3 TCustomForm.AfterConstruction + $17
:004fe882 TCustomForm.Create + $1A6
:005092ad TApplication.CreateForm + $79
Project5.Project5
:74e5336a kernel32.BaseThreadInitThunk + 0x12
:77129902 ntdll.RtlInitializeExceptionChain + 0x63
:771298d5 ntdll.RtlInitializeExceptionChain + 0x36
Angehängte Dateien
Dateityp: 7z RTFTest64Bit.7z (98,6 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
JYPDWhite

Registriert seit: 29. Sep 2010
28 Beiträge
 
#3

AW: TRtfLabel - Label zur Darstellung von RTF

  Alt 29. Jun 2017, 16:51
So ich möchte hier auch was zurück geben.
Ich habe es hinbekommen. Im Endeffekt musste man den ThisCallWrapper anpassen, das habe ich gelöst indem ich den in eine neue Datei für x64 ausgelagert habe. Bei den usese der anderen Units wird per Compilerdirektive entschieden welche Datei eingebunden werden soll.
Dann gab es noch ein paar Stellen wo Pointer an Windows übergeben werden diese wurden vorher in integer umgewandelt das habe ich ebenfalls geändert damit da keine Probleme auftreten sollten. Das ganze ist jetzt nicht groß getestet. Ich kann nur Sagen dass es bei mir soweit funktioniert ob es nicht noch irgendwo Probleme gibt möchte ich nicht ausschließen.
Angehängte Dateien
Dateityp: zip RTFLabel.zip (143,6 KB, 26x aufgerufen)
  Mit Zitat antworten Zitat
jas

Registriert seit: 17. Apr 2018
1 Beiträge
 
#4

AW: TRtfLabel - Label zur Darstellung von RTF

  Alt 18. Apr 2018, 08:30
Danke Flocke und JYPDWhite für die Arbeit.
Ich habe den Code auf Delphi Tokyo 32 und 64 Bit ausprobiert. Sehr schön.

Allerdings konnte ich in der Versionsauswahl im RtfLabel Example nicht auf Version 4.1 (bzw.auf MSFTEDIT.DLL) wechseln, was die Darstellung schon etwas einschränkt.

Beim Debuggen habe ich dann festgestellt, dass in RichEditDll.pas -> DllVersionNumber für die MSFTEDIT.dll die dwFileVersionMS=$A0000 ergibt.
Da nur die unteren 2 Bytes (typecast word) als VersionNumber gelesen werden, ist das Ergebnis 0 und die DLL wird nicht in der Combobox angeboten.

Wenn ich den Typecast entferne, erhalte ich zwar unsinnige Versionsnummern, kann aber die MSFTEDIT.dll auswählen und alles ist okay.

Weiß jemand, warum das so ist und wie das korrekt zu beheben ist?
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: TRtfLabel - Label zur Darstellung von RTF

  Alt 29. Aug 2006, 07: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
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: TRtfLabel - Label zur Darstellung von RTF

  Alt 29. Aug 2006, 22: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.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#7

Re: TRtfLabel - Label zur Darstellung von RTF

  Alt 29. Aug 2006, 23: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

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: TRtfLabel - Label zur Darstellung von RTF

  Alt 30. Aug 2006, 07: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
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#9

Re: TRtfLabel - Label zur Darstellung von RTF

  Alt 4. Sep 2006, 11: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

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: TRtfLabel - Label zur Darstellung von RTF

  Alt 4. Sep 2006, 13: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
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  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 21:10 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-2025 by Thomas Breitkreuz