Ich habe noch mal etwas nach geforscht und mir ist ein weiterer Fehler aufgefallen:
Delphi-Quellcode:
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
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.
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:
{ 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
Active.Brush.Color wird übernommen. So wie es aussieht. Allerdings wird er nicht intern verwendet !
Edit04: Wenn ich alles intern auf Active umstelle klappt es. Aber mit dem Style Link geht es nicht.
Delphi-Quellcode:
procedure TPLTE_Style_ObjectLink.Assign(const aStyle: TPLTE_Style_ObjectLink);
begin
Active.Assign(aStyle.Active);
// Hover.Assign(aStyle.Hover);
end; // TPLTE_Style_ObjectLink.Assign
Wenn ich beim erstellen des Objektes ebenfalls auf Active zurückgreife geht es.
Der Fehler liegt wahrscheinlich beim TPLTE_Style_ObjectLink würde ich sagen.
Edit05: Ich verstehe die Welt nicht mehr:
Delphi-Quellcode:
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
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.