Originally Posted by
Dubbeld
Ik zet op een Form een label en stel de kleur in op bv. Geel. Wordt keurig weergegeven op het Form. Nu zet ik Transparent:=True en daarna weer op False. Dan wordt de kleur niet Geel maar Zwart.
Zoiets kan komen door ParentColor (of ParentBackground bij andere componenten) misschien.
http://lazarus-ccr.sourceforge.net/d...ls/tlabel.html
Als je Color set, dan wordt ParentColor False.
Ik kan me best inbeelden dat Color ook geset wordt door Transparant.
Laten we eens naar de implementatie van TLabel.Transparent in de LCL kijken..
De TLabel in file stdctrls.pp derived van TCustomLabel welke wordt geinclude uit file customlabel.inc, en de property setter doet dit:
pascal Code:
procedure TCustomLabel.SetTransparent(NewTransparent: boolean);
begin
if Transparent = NewTransparent then
exit;
if NewTransparent then
Color := clNone
else
if Color = clNone then
Color := clBackground;
end;
Zo te zien wordt de Color property dus altijd naar clBackground gezet. En deze staat in graphics.pp gedefineerd als:
pascal Code:
const clBackground = (SYS_COLOR_BASE or COLOR_BACKGROUND);
En dat verschilt dus per systeem als ik die constante naam mag geloven, en blijkt dus op zwart uit te komen.
Het is dus by design; want de Transparent property zet Color := clNone en overschrijft je geel waarde.
Bookmarks