![]() |
OnMouseLeave wird von OnMouseEnter aufgerufen
Hallo zusammen,
ich habe mal wieder ein kleines Problem. Ich wollte eine eigene Komponente entwerfen, die von einem TEdit erbt. In diesem TEdit soll rechts am Rand eine kleine Lupe erscheinen, die wie ein Button benutzt werden kann. Da man die Eigenschaft "Glyph" eines Buttons jedoch nich skalieren kann, habe ich einfach ein TImage benutzt, welches ein onclick event bekommt. Zusätzlich wollte ich diesem TImage einen MouseOver Effekt beifügen, wie ihn die TButtons auch besitzen. Damit man dem Image einen Border verpassen kann, habe ich dieses einfach auf einem Panel plaziert. FSearchIcon = TImage mit der Lupe FIconPanel = das Panel auf dem das Image sitzt Die Methoden für den MouseOver Effekt sehen wie folgt aus:
Delphi-Quellcode:
Mein Problem ist nur, dass die Methode "OnSearchButtonMouseLeave" von der Methode "OnSearchButtonMouseEnter" direkt aufgerufen wird, sodass der Effekt eigentlich nichts bringt.
procedure TSearchEdit.OnSearchButtonMouseEnter(Sender: TObject);
begin FSearchIcon.OnMouseLeave := nil; try FIconPanel.BorderStyle := bsSingle; finally FSearchIcon.OnMouseLeave := OnSearchButtonMouseLeave; end; end; procedure TSearchEdit.OnSearchButtonMouseLeave(Sender: TObject); begin FIconPanel.BorderStyle := bsNone; end; Dieses Verhalten habe ich auch schon festgestellt, wenn ich ein TImage auf ein normales Form setze und dann zwei Haltepunkte bei den beiden Methoden mache. Hat hierzu jemand eine Idee? Danke für die Hilfe |
AW: OnMouseLeave wird von OnMouseEnter aufgerufen
Liegt eventuell daran, dass du die Events jedes Mal neu zuweist. Mach dir stattdessen besser eine boolsche Variable, die sich merkt, ob sich die Maus grade innerhalb der Komponente befindet. Dann kannst du anhand dieses Wertes entsprechend im OnMouseLeave Event reagieren.
|
AW: OnMouseLeave wird von OnMouseEnter aufgerufen
Zitat:
Delphi-Quellcode:
Gruß
procedure TSearchEdit.OnSearchButtonMouseEnter(Sender: TObject);
begin FIconPanel.BorderStyle := bsSingle end; procedure TSearchEdit.OnSearchButtonMouseLeave(Sender: TObject); begin FIconPanel.BorderStyle := bsNone end; |
AW: OnMouseLeave wird von OnMouseEnter aufgerufen
ok hat sich irgendwie erledgt.
Anscheinend funktioniert der MouseOver Effekt nur wenn das Bild auf dem Panel Align=alClient ist. Trotzdem vielen Dank für die Hilfe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz