Thema: Delphi Rahmen um Label

Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#40

Re: Rahmen um Label

  Alt 31. Jan 2007, 12:19
@Ingo : vielen Dank für den unnützen langen Beitrag.

Habe das ganze nochmals überprüft. Es geht nur so, bzw. am einfachsten :

Delphi-Quellcode:
procedure TfrmKey.lblMouseEnter(Sender: TObject);
begin
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clBlack;
  end;
  Canvas.Pen.Width := PinselBreite;
  Canvas.Pen.Color := clNavy;
  Canvas.Rectangle ((Sender as TLabel).Left+1,(Sender as TLabel).Top+1,
                   (Sender as TLabel).Left + (Sender as TLabel).Width,
                   (Sender as TLabel).Top+(Sender as TLabel).Height);
end;
Wie man sieht, wird da kein ReFresh, Repaint, bsclear usw. gebraucht und ich lasse mich auch nicht überreden, das weshalb auch immer einzubauen. Das korrespondierende OnMouseLeave setzt die Farben zurück und zeichnet den Rahmen in der Hintergrundfarbe wieder neu, der ist dann eben nicht mehr zu sehen. That's it. Gibt es kein MouseLeave, dann wird der Rahmen schon richtig gezeichnet, er bleibt dann eben da wo er ist und verschwindet nicht.

Lustig ist noch das hier :

Zitat von hsg:
Vielleicht nimmst du nun auch noch die Koordinaten des Labels (hast ja aus deinem With rausgeschmissen
hsg, wer zuletzt lacht, lacht am besten. Der Witz ist nämlich das WITH. Wollte den ganzen Sender as TLabel Krempel im Rectangle weg haben. Geht aber nicht. Auch ein zweites, vom ersten with getrenntes with (Sender as TLabel).Canvas do begin oder so was ähnliches geht nicht. Irgendwie haben die Form-Koordinaten trotz "with" Vorrang. Also musste ich das Rectangle mit explizit angegeben Label-Koordinaten machen.
Gruß
Hansa
  Mit Zitat antworten Zitat