MDLabel: Komponente verbessern. Bitte um Mithilfe
Liste der Anhänge anzeigen (Anzahl: 3)
Ich habe mir vor einiger Zeit mal die Komponente MDLabel, ein HTML Label, angeguckt. Es besteht aus einer einzigen Unit, was mir sehr gefällt.
Aber die hat scheinbar ein paar Kinderkrankheiten. 1) die Caption muss am Ende eine Leerstelle haben, damit das letzte Wort oder das letzte Zeichen gezeichnet wird 2) Links respektieren nicht den Rest der schon aktiven Font-Styles Würdet ihr mir helfen, diese Komponente auf Vordermann zu bringen? Info: in GetToken() wird ausgewertet, welche Tags verwendet werden. Ich habe das schon so erweitert, dass das Set-basiert ist. TextToWords; wertet das gesetzte Set aus. TextToWords ist also der Knackpunkt denke ich. Erledigt Beispiel-Captions: := '0 <b>1<a>google.de</a>2</b> 3 '; Ergebnis sollte sein: 0 1google.de>2 3 Das Ergebnis ist aber: 0 1google.de>2 3 := '0 <b><i>1<a>google.de</a>2</i></b> 3 '; Ergebnis sollte sein: 0 1google.de2 3 Das Ergebnis ist aber: 0 1google.de2 3 |
AW: MDLabel: Komponente verbessern. Bitte um Mithilfe
2) Das die Links zwei eigene Schriften (TFont-Instanzen) haben, ist dir aber bewusst?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin FMDLabel1 := TMDLabel.Create(Self); FMDLabel1.Parent := Self; FMDLabel1.Align := TAlign.alTop; FMDLabel1.Name := 'FMDLabel1'; FMDLabel1.LinkFontNormal.Style := FMDLabel1.LinkFontNormal.Style + [fsBold]; FMDLabel1.LinkFontHover.Style := FMDLabel1.LinkFontHover.Style + [fsBold]; FMDLabel2 := TMDLabel.Create(Self); FMDLabel2.Parent := Self; FMDLabel2.Align := TAlign.alBottom; FMDLabel2.Name := 'FMDLabel2'; FMDLabel2.LinkFontNormal.Style := FMDLabel2.LinkFontNormal.Style + [fsBold, fsItalic]; FMDLabel2.LinkFontHover.Style := FMDLabel2.LinkFontHover.Style + [fsBold, fsItalic]; FMDLabel1.Caption := FMDLabel1.Name + ' 0 <b>1<a>google.de</a>2</b> 3 '; FMDLabel2.Caption := FMDLabel2.Name + ' 0 <b><i>1<a>google.de</a>2</i></b> 3 '; end; |
AW: MDLabel: Komponente verbessern. Bitte um Mithilfe
Zitat:
Guck dir meine Ausgaben mal genau an. Bei der zweiten Ausgabe wird <i> verarbeitet, <b> aber nicht. Das Problem ist also woanders. Auch wenn man es so lösen könnte wie du - das behebt das Problem in der Komponente nicht. In TLink.Create() übergebe ich CurrentStyle aus TextToWords;. Das wird aktuell nicht verarbeitet aber das ist egal, denn es funktioniert ja eh nicht. Siehe oben. Auch ohne es auszuwerten wird i für den Link verarbeitet, b aber nicht. Diese Komponente hat in dieser Form also irgendein grundlegendes Problem. |
AW: MDLabel: Komponente verbessern. Bitte um Mithilfe
Zitat:
Diese steuern nur das Verhalten von TMDLabel.Font.Style. Alle Label-Inhalte zwischen <a> und </a> werden über TMDLabel.LinkFontNormal.Style und TMDLabel.LinkFontHover.Style gesteuert. 2. Deine Ausgaben - konkret: dein zweites Beispiel - ist falsch. Das lässt sich so im Testprojekt nicht nachstellen. Dort ist www.google.de nicht kursiv gezeichnet. 3. Wenn du das anders haben möchtest, dann musst du die Zeilen 1421-1422, 1427-1445 und 2080-2081, 2086-2104 auskommentieren und/oder löschen. 4. Damit verlierst du aber die Fähigkeit, Links mit MouseHover farbig darzustellen und einen Underline anzuzeigen. Das sollte dir bewusst sein. Das nach zu implementieren überlasse ich dir als Hausaufgabe. Mit den aufgezeigten Quelltextzeilen aus 3. und etwas Verständnis über die Zusammenhänge, ist das aber keine große Schwierigkeit. |
AW: MDLabel: Komponente verbessern. Bitte um Mithilfe
Hausaufgabe erledigt. Ich habe das durch das hier ausgetauscht. Das funktioniert. Ich habe auch das Event OnGetLinkStyle und alles was damit zusammenhängt (auch Font, FontHover in TLink) rausgenommen. Seitdem ist das in Ordnung. Die Farbwerte sind nur Testwerte.
Delphi-Quellcode:
Die aktuelle Version ist oben zu finden.
if IsMouseOverLink(WordInfo.FLinkID) then
Canvas.Font.Color := clRed else Canvas.Font.Color := clYellow; Eine letzte Frage habe ich aber noch und da habe ich tatächlich keine Lösung für. Warum muss ich am Ende der Caption eine Leerstelle angeben?
Code:
Ohne die Leerstelle wird die 3 nicht gezeichnet.
'0 <b>1<a>google.de</a>2</b> 3 '
|
AW: MDLabel: Komponente verbessern. Bitte um Mithilfe
Delphi-Quellcode:
sowas geht nicht?
1<a href="google.de"><b>google.de</b></a>2
|
AW: MDLabel: Komponente verbessern. Bitte um Mithilfe
Wie gesagt. Sobald am Ende eine Lererstelle ist, wird das letzte Zeichen/Wort verschluckt.
Im ersten Post habe ich auf die aktuelle Version aktualisiert. Das Linkproblem ist beseitigt. ~~~Problem auch erledigt~~ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 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