![]() |
Re: PL TextEngine: Klassenstruktur Problem.... ?
Ich habe noch mal etwas nach geforscht und mir ist ein weiterer Fehler aufgefallen:
Delphi-Quellcode:
rate mal was in writeln drin steht. Da steht false drin. Dadurch kommt der Fehler zu Stande, die Frage ist jetzt, warum ist das False. Das dürfte gar nicht. im Übrigen geht die Schrift Farbe nur wenn ich kein FillRect anwende.
procedure TPLTE_ObjectBaseSurface.Paint;
begin if Visible then begin Style.ToCanvas(canvas); if (self is TPLTE_ObjectSTD_TextLink) then begin writeln(assigned(Style.Brush)); end; Canvas.FillRect(Left, Top, (Left+Width)-ExtraWidht, (Top+Height)-ExtraHeight) end; // Canvas.Rectangle(Left, Top, (Left+Width)-ExtraWidht, (Top+Height)-ExtraHeight); end; // TPLTE_ObjectBaseSurface.Paint Edit01: Wenn ich mir noch den Classenamen ausgeben lasse von Style kommt da "TPLTE_Style_ObjectLink" Das darf eigentlich gar nicht sein. Ich denke das ist die Ursache. Eine Lösung habe ich damit leider noch nicht. Edit02: Ich bin mir unsicher im Moment, ich glaube aber das dieses Verhalten richtig ist. Denn ein Link hat nun mal kein Brush im Style. Edit03: Es wird immer Seltsamer:
Delphi-Quellcode:
Active.Brush.Color wird übernommen. So wie es aussieht. Allerdings wird er nicht intern verwendet !
{ TPLTE_Style_ObjectLink }
constructor TPLTE_Style_ObjectLink.Create; begin inherited Create; Link:=TPlTE_Style_ObjectText.Create; Link.brush.Color:=clLime; Link.Font.Color:=clRed; Active:=TPlTE_Style_ObjectText.Create; Active.Brush.Color:=clRed; // Focus:=TPlTE_Style_ObjectText.Create; // Hover:=TPlTE_Style_ObjectText.Create; // Visited:=TPlTE_Style_ObjectText.Create; // Modus:=OLM_Link; end; // TPLTE_Style_ObjectLink.Create Edit04: Wenn ich alles intern auf Active umstelle klappt es. Aber mit dem Style Link geht es nicht.
Delphi-Quellcode:
Wenn ich beim erstellen des Objektes ebenfalls auf Active zurückgreife geht es.
procedure TPLTE_Style_ObjectLink.Assign(const aStyle: TPLTE_Style_ObjectLink);
begin Active.Assign(aStyle.Active); // Hover.Assign(aStyle.Hover); end; // TPLTE_Style_ObjectLink.Assign Der Fehler liegt wahrscheinlich beim TPLTE_Style_ObjectLink würde ich sagen. Edit05: Ich verstehe die Welt nicht mehr:
Delphi-Quellcode:
Auf die Reihenfolgen kommt es an. Jetzt nimmt er die werte von Link. Immer das was ganz oben steht. Wie kann das sein ? Das Verhalten verstehe ich nicht.
TPLTE_Style_ObjectLink = class(TPLTE_Style_BaseExt)
private fCurrentStyle: TPlTE_Style_ObjectText; fModus: TPLTE_Style_ObjectLinkModus; fLink: TPlTE_Style_ObjectText; fActive: TPlTE_Style_ObjectText; fFocus: TPlTE_Style_ObjectText; fHover: TPlTE_Style_ObjectText; fVisited: TPlTE_Style_ObjectText; protected |
Re: PL TextEngine: Klassenstruktur Problem.... ? [Gelöst]
Problem endlich gelöst. Vielen Dank an Blup.
Die Lösung war ganz einfach(wie ich es mir gedacht hatte, nur ich habe sie übersehen bzw. nicht dran gedacht): Zitat:
|
Re: PL TextEngine: Klassenstruktur Problem.... ?
Wie schon gesagt wurde in GetSize auf Style.Font zugegriffen.
In einem TPLTE_ObjectSTD_TextLink ist Style aber eine Klasse, die kein Font property besitzt. Entsprechend wurde irgend ein Wert aus dem Speicher der Klasse gelesen. Dies muss, abhängig von der Reihenfolge der Deklaration, eine der TPlTE_Style_ObjectText variablen gewesen sein. TPLTE_Style_Font und TPlTE_Style_ObjectText sind beide von TPLTE_Style_Base abgeleitet. TPLTE_Style_Base deklariert virtuell bereits ToCanvas, so konnte tatsächlich ein Funktionsaufruf erfolgen. |
Re: PL TextEngine: Klassenstruktur Problem.... ?
Zitat:
Aber das währe eine Erklärung. Nun ja, ich konnte gestern endlich weiter machen. Das ist die Hauptsache. Ich finde die Klassenstruktur gar nicht so schlecht, oder ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 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