Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Rahmen um Label (https://www.delphipraxis.net/85366-rahmen-um-label.html)

Hansa 30. Jan 2007 10:04

Re: Rahmen um Label
 
Canvas der Form ? :gruebel: Habe jetzt mal folgendes gemacht :

Delphi-Quellcode:
procedure TfrmKey.lblMouseEnter(Sender: TObject);
begin
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clNavy;
showmessage (IntToStr (Height));
    Canvas.Pen.Width:=1;
    Canvas.Pen.Color:=clBlue;
    Canvas.Rectangle(Left-1, Top-1,Left + Width+1, Top + Height+1);
  end;
end;
Die showmessage zeigt immer 20 an, also relativ wenig. Die Labels sind auf einer Form verteilt und sollen eine andere Farbe und auch einen Rahmen erhalten, sofern sich der Mauszeiger darüber befindet. Die Farben gehen so, der Rahmen noch nicht.

Hawkeye219 30. Jan 2007 10:29

Re: Rahmen um Label
 
Zitat:

Zitat von Hansa
Die Farben gehen so, der Rahmen noch nicht.

Der Grund dafür könnte sein, daß du auf dem Canvas des Labels zeichnest.

Gruß Hawkeye

Blackheart 30. Jan 2007 10:43

Re: Rahmen um Label
 
Delphi-Quellcode:
procedure TForm1.Label1MouseEnter(Sender: TObject);
begin
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clNavy;
    Form1.Canvas.Pen.Width:=1;
    Form1.Canvas.Pen.Color:=clRed;
    Form1.Canvas.Rectangle(Left-1, Top-1,Left + Width+1, Top + Height+1);
    Repaint;
 end;
end;

Hansa 30. Jan 2007 10:51

Re: Rahmen um Label
 
Ich Idiot habe ja auch in der showmessage Height anzeigen lassen. :wall: Klar, dass das immer gleich blieb.

Delphi-Quellcode:
procedure TfrmKey.lblMouseEnter(Sender: TObject);
begin
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clNavy;
  end;
showmessage (IntToStr ((Sender as TLabel).Top));
  Canvas.Pen.Width:=1;
  Canvas.Pen.Color:=clBlue;
  Canvas.Rectangle(Left-1, Top-1,Left + Width+1, Top + Height+1);
end;
Jetzt wird da was gezeichnet, aber an völlig falscher Stelle irgendwo in rechter Form-Ecke. Brauche das Rechteck aber um das Label in Abhängigkeit von dessen Koordinaten. Hat jemand vielleicht noch fertigen Code ? :mrgreen:

wg. roter Kasten : das ist so ähnlich. Bin aber hingegangen und habe den Code lieber aus dem with rausverlagert. Ergebnis : siehe oben.

Blackheart 30. Jan 2007 11:03

Re: Rahmen um Label
 
Siehe Eintrag 13.

hsg 30. Jan 2007 11:05

Re: Rahmen um Label
 
Zitat:

Zitat von Hansa
Ich Idiot habe ja auch in der showmessage Height anzeigen lassen. :wall: Klar, dass das immer gleich blieb.

Delphi-Quellcode:
procedure TfrmKey.lblMouseEnter(Sender: TObject);
begin
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clNavy;
  end;
showmessage (IntToStr ((Sender as TLabel).Top));
  Canvas.Pen.Width:=1;
  Canvas.Pen.Color:=clBlue;
  Canvas.Rectangle(Left-1, Top-1,Left + Width+1, Top + Height+1);
end;
Jetzt wird da was gezeichnet, aber an völlig falscher Stelle irgendwo in rechter Form-Ecke. Brauche das Rechteck aber um das Label in Abhängigkeit von dessen Koordinaten. Hat jemand vielleicht noch fertigen Code ? :mrgreen:

wg. roter Kasten : das ist so ähnlich. Bin aber hingegangen und habe den Code lieber aus dem with rausverlagert. Ergebnis : siehe oben.

Vielleicht nimmst du nun auch noch die Koordinaten des Labels (hast ja aus deinem With rausgeschmissen :lol:

Hansa 30. Jan 2007 11:30

Re: Rahmen um Label
 
Mein Source darf nicht nur für "Form1" gelten. Das wird alles vererbt. Letzter Stand ist der hier :

Delphi-Quellcode:
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clNavy;
  end;
//showmessage ('1111');
  Canvas.Pen.Width:=1;
  Canvas.Pen.Color:=clBlue;
  Canvas.Rectangle((Sender as TLabel).Left,(Sender as TLabel).Top,
                   (Sender as TLabel).Left + (Sender as TLabel).Width,
                   (Sender as TLabel).Top+(Sender as TLabel).Height);
Sofern die showmessage nicht auskommentiert ist, sieht man den Rahmen und zwar auch mit den richtigen Koordinaten. Repaint nützt da auch nichts.

Noch ein Effekt : ist der Rahmen zu sehen, dann ist die Label.Caption weg oder wohl eher überdeckt. Ich denke das Rectangle zeichnet nur Linien ? Habe doch kein FillRect etc. verwendet. :shock:

Hansa 30. Jan 2007 11:32

Re: Rahmen um Label
 
Zitat:

Zitat von hsg
..Vielleicht nimmst du nun auch noch die Koordinaten des Labels (hast ja aus deinem With rausgeschmissen :lol:

Die Koordinaten gehen doch jetzt. Was gibts da zu lachen ? :mrgreen:

TBx 30. Jan 2007 11:45

Re: Rahmen um Label
 
Zitat:

Zitat von Hansa
Ich denke das Rectangle zeichnet nur Linien ? Habe doch kein FillRect etc. verwendet. :shock:

Falsch gedacht.
Rectangle zeichnet mit dem Pen einen Rahmen rundum und füllt dann mit dem brush aus.
Versuch brush.style auf bsClear zu setzen und evtl auch Brush.Color auf clClear.

Hope it helps

Thomas

Hansa 30. Jan 2007 12:13

Re: Rahmen um Label
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ne, Brush bezieht sich auf die Form. Das hier liefert etwas wie im Anhang. Aber nur, solange die showmessage da ist.

Delphi-Quellcode:
procedure TfrmKey.lblMouseEnter(Sender: TObject);
begin
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clNavy;
  end;
showmessage ('KJHJK');
  Canvas.Pen.Width := 2;
  Canvas.Pen.Color :=clBlue;
  Canvas.Rectangle ((Sender as TLabel).Left,(Sender as TLabel).Top,
                   (Sender as TLabel).Left + (Sender as TLabel).Width,
                   (Sender as TLabel).Top+(Sender as TLabel).Height);
end;
Wichtig wäre jetzt erstmal zu wissen, wie das showmessage wegzubekommen ist. Das ist lästig und es könnte Quereffekte hervorrufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.
Seite 2 von 5     12 34     Letzte »    

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