Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi andere Farbe, wenn Maus auf Label (https://www.delphipraxis.net/78202-andere-farbe-wenn-maus-auf-label.html)

Cöster 30. Sep 2006 21:02


andere Farbe, wenn Maus auf Label
 
Hi!

Ich möchte, dass die Font.Color der Labels rot ist, wenn sich die Maus darauf befindet.

So mach ich es bisher:
Delphi-Quellcode:
procedure TForm1.LabelMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  TLabel(Sender).Font.Color := clRed;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Label1.Font.Color := clBlack;
  Label2.Font.Color := clBlack;
end;
Aber der Nachteil dieser Lösung ist doch, dass immer, wenn die Maus bewegt wird, und nicht nur dann, wenn sie auf ein Label drauf bzw von einem Label runter bewegt wird, aufgerufen werden.

3_of_8 30. Sep 2006 21:04

Re: andere Farbe, wenn Maus auf Label
 
Ich glaub es gibt sowas wie MouseEnter/MouseLeave.

Cöster 30. Sep 2006 21:08

Re: andere Farbe, wenn Maus auf Label
 
Zitat:

Zitat von 3_of_8
Ich glaub es gibt sowas wie MouseEnter/MouseLeave.

Bei Labels leider nicht

mkinzler 30. Sep 2006 21:09

Re: andere Farbe, wenn Maus auf Label
 
In neueren Delphi-Versionen schon.

Die Muhkuh 30. Sep 2006 21:10

Re: andere Farbe, wenn Maus auf Label
 
Doch,

aber erst ab Delphi 7 (6?). Bei Delphi5 müsstest Du das von Hand nachprogrammieren.

mkinzler 30. Sep 2006 21:12

Re: andere Farbe, wenn Maus auf Label
 
Zitat:

Bei Delphi5 müsstest Du das von Hand nachprogrammieren.
Z.B. in dem du im .OnMouseMove der Form, diePositions des Mauszeigers mit der des Labels vergleichst.

turboPASCAL 30. Sep 2006 21:13

Re: andere Farbe, wenn Maus auf Label
 
Nein, OnMouseEnter & OnMouseLeave gibt normaler weise nicht bei einem TLabel.
Hier in der DP aber schon. Such einfach mal : Hier im Forum suchenTLabel AND OnMouseEnter

Cöster 30. Sep 2006 21:16

Re: andere Farbe, wenn Maus auf Label
 
Zitat:

Zitat von mkinzler
Zitat:

Bei Delphi5 müsstest Du das von Hand nachprogrammieren.
Z.B. in dem du im .OnMouseMove der Form, diePositions des Mauszeigers mit der des Labels vergleichst.

Das hätte dann aber ja auch keinen Vorteil gegenüber meiner Variante. Dann müsste auch bei jeder Mausbewegung eine procedure aufgerufen werden.

mkinzler 30. Sep 2006 21:19

Re: andere Farbe, wenn Maus auf Label
 
Zitat:

Dann müsste auch bei jeder Mausbewegung eine procedure aufgerufen werden.
Ja, stimmt.
[Edit: Warum keine neuere Delphiversion? D5 Standard hat schließlich die gleichen Einschränkungen wie D7PE/D2005PE?]

Die Muhkuh 30. Sep 2006 21:28

Re: andere Farbe, wenn Maus auf Label
 
Matti,

OnMouseLeave und OnMouseEnter gibts bei einem Label in Delphi 7.

Wie gesagt, leite dir eine Komponente von T(Custom)Label ab und fange CM_MOUSELEAVE und CM_MOUSEENTER ab.

3_of_8 30. Sep 2006 21:28

Re: andere Farbe, wenn Maus auf Label
 
Zitat:

Zitat von turboPASCAL
Nein, OnMouseEnter & OnMouseLeave gibt normaler weise nicht bei einem TLabel.
Hier in der DP aber schon. Such einfach mal : Hier im Forum suchenTLabel AND OnMouseEnter

Also bei mir (Delphi 7) gibts das sehr wohl.

Hansa 1. Okt 2006 01:47

Re: andere Farbe, wenn Maus auf Label
 
Ob das jetzt unter Versionen < D6 geht, weiß ich leider nicht :

Delphi-Quellcode:
procedure TfrmKey.lblMouseEnter(Sender: TObject);
begin
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clNavy;
  end;
end;

procedure TfrmKey.lblMouseLeave(Sender: TObject);
begin
  with Sender as TLabel do begin
    Color := clInfoBk;
    Font.Color := clBlack;
  end;
end;
P.S.: oh je, in dem Code am Anfang wird Label1 usw. direkt angesprochen. :roll:

Muetze1 1. Okt 2006 11:46

Re: andere Farbe, wenn Maus auf Label
 
Ich wollte ähnliches mit einem Label unter Delphi 5 erreichen und habe mir eine kleine Ableitung geschrieben und die o.g. VCL Messages benutzt. Hier ein Beispiel dazu, du könntest es ja verallgemeinern und ein Label für D5 bauen, welches ein MouseEnter/MouseLeave bietet.

TURLLabel

Cöster 2. Okt 2006 08:59

Re: andere Farbe, wenn Maus auf Label
 
Zitat:

Zitat von Hansa
P.S.: oh je, in dem Code am Anfang wird Label1 usw. direkt angesprochen. :roll:

Wie willst du es denn ohne OnMouseEnter und OnMouseLeave verhindern, dass die Labels direkt angesprochen werden.

Bei Zeiten werde ich mir sicherlich mal ne OnMouseEnter und OnMouseLeave-fähige Labelkomponente schreiben. Aber Bisher hab ich noch keinerlei Erfahrung mit der Komponentenprogrammierung.

Ich denke, dann lass ich's erstmal so, wie ich's jetzt hab. Wenn es irgendwann aber mal Performance-Probleme damit geben sollte, werd ich so schnell wie möglich mit der Komponentenprogrammierung anfangen.

Danke an alle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 Uhr.

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