Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OnMouseOver (Labels) (https://www.delphipraxis.net/3077-onmouseover-labels.html)

citybreaker 21. Feb 2003 18:22


OnMouseOver (Labels)
 
Hallo!

Ich habe heute in einem Programm, das
mit delphi gemacht wurde, etwas gefunden
was ich auch gerne machen würde.

In dem Programm war ein Label (nehme ich mal)
und wenn man mit der Maus über den Labe
ging, glühte er Gelb auf.

Nun meine Frage! Wie macht man soetwas?

cYa Citybreaker :D

CalganX 21. Feb 2003 18:26

Hi,
mit der Eigenschaft "Font" eines Labels kann man die Schrift zuweisen. Schaue dir diese Eigenschaft mal an.
Das Ereginis, das du suchst ist "OnMouseMove". Du solltest auch im OnMouseMove des Forms das ganze zurücksetzen...

Chris

citybreaker 21. Feb 2003 18:49

Habs ausprobiert, hat aber leider nicht den gewünschten
Effekt erziehlt. Die schrift bleibt ja schwarz und ein gelber
Rand um der Schrift erscheint.
Trotzdem danke für die Antwort.

cYa Citybreaker :D

CalganX 21. Feb 2003 18:51

Hm... dann versuch mal folgendes (und jetzt mach ich's dir doch komplett):
Delphi-Quellcode:
{in der Label1.OnMouseMove:}
Label1.Font.Color := clBlue;

{in der Form1.OnMouseMove:}
Label1.Font.Color := clBlack;
Chris

citybreaker 21. Feb 2003 18:53

Danke!
Aber hierbei wechselt die Farbe
auch komplett.

cYa Citybreaker :D

citybreaker 21. Feb 2003 18:57

Hier mal ein Bild. ;)

http://hot-server.de/breakdancer/glow.bmp

cYa Citybreaker :D

CalganX 21. Feb 2003 19:00

Achso... ich habe falsch gelesen. Das mit dem glühen wirst du wohl nur folgendermaßen hinbekommen:
  • Erstelle 2 Labels, die aufeinander liegen
  • Mache das Hintere einen Tick größer (von der Schriftgröße her)
  • Stelle beim hinteren Visible auf false
  • Füge im OnMouseMove des vorderen ein:
    Delphi-Quellcode:
    Label2.Visible := true; // das hintere
  • Füge im Form1.OnMouseMove ein:
    Delphi-Quellcode:
    Label2.Visible := false;

So sollte es funktionieren, auch wenn es nicht die schönste Möglichkeit ist...

Chris

Sharky 22. Feb 2003 09:29

Hai citybreaker,

mit Christian Seehases Code aus diesem Thread

habe ich dies gemacht:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    StaticText1: TStaticText;
  private
    { Private-Deklarationen }
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

const
  _clMouseEntered = clyellow;
  _clMouseLeaved = clBtnFace;


{ TForm1 }

procedure TForm1.CMMouseEnter(var Message: TMessage);

var
  ptWork : TPoint;

begin
  GetCursorPos(ptWork);
  if WindowFromPoint(ptWork) = StaticText1.Handle then //Maus ist über dem StaticText
  begin
    StaticText1.Color := _clMouseEntered;
  end;
end;

procedure TForm1.CMMouseLeave(var Message: TMessage);

var
  ptWork : TPoint;

begin
  GetCursorPos(ptWork);
  if WindowFromPoint(ptWork) <> StaticText1.Handle then //Maus verlässt den StaticText
  begin
    StaticText1.Color := _clMouseLeaved;
  end;
end;
Es geht halt nicht mit einem Label sondern mit einem StaticText. Aber damit dürftest Du leben können :lol:

citybreaker 22. Feb 2003 12:45

Danke! Jetzt klappts!

cYa Citybreaker :D

City Light 22. Feb 2003 14:26

Oder wie wärs damit?

Delphi-Quellcode:
public
   procedure WNDPROC(var message:TMessage);override;


procedure Tform1.WNDPROC(var message:Tmessage);
begin
if message.LParam=Longint(Label1) then
   begin
   if message.Msg=CM_MOUSEENTER then
   label1.Font.Color:=clred;
   if message.Msg=CM_MOUSELEAVE then
   label1.Font.Color:=clblack;
   end;
inherited WNDPROC(message);
end;
Grüße Tino


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 Uhr.
Seite 1 von 2  1 2      

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