Zitat von
onlinekater:
Zitat von
Hansa:
Ne, Brush bezieht sich auf die Form.
???
Kann Dir hier nicht ganz folgen. Was meinst Du damit?
Mach dir nichts draus - er kann sich manchmal selbst nicht ganz folgen.
Das von dir vorgeschlagene Canvas.Brush.Style:=bsClear funktioniert sehr gut. Es erspart zudem das Label.Refresh (war eh nur 'ne Trickserei) und ermöglicht damit das ungefährdete Neuzeichnen (und damit das "Ausblenden") des Rectangels (mit Farbe BtnFace) beim Verlassen des Labels mit der Maus.
Wenn die Labels jetzt weit genug entfernt von anderen Dingen auf der Form liegen, so dass der Rahmen nichts übermalt, ist's gut, andernfalls muss das Übergemalte neu gezeichnet werden. Das würde pauschal ein Form.Refresh am Ende der LabelMouseLeave-Routine erledigen.
//Nachtrag:
Wie früher schonmal sinngemäß angedeutet, wird ein 2 Pixel dicker Rahmen um ein Label auch erst sichtbar, wenn man ihn 2 Pixel größer als das Label macht. Also so:
Delphi-Quellcode:
Canvas.Rectangle ((Sender as TLabel).Left-2,(Sender as TLabel).Top-2,
(Sender as TLabel).Left + (Sender as TLabel).Width+2,
(Sender as TLabel).Top+(Sender as TLabel).Height+2);
Letzteres wird von marabus Vorschlag möglicherweise auch schon berücksichtigt. Aber zur Verabschaulichung bleibe ich hier noch bei der "aufgelösten" Version.