Delphi-PRAXiS

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 Eigene Mouseevents werden zu oft ausgeführt (https://www.delphipraxis.net/68471-eigene-mouseevents-werden-zu-oft-ausgefuehrt.html)

BaYeR 30. Apr 2006 01:08


Eigene Mouseevents werden zu oft ausgeführt
 
Hallo Leute ich habe ein Problem mit den Events OnMouseEnter und OnMouseLeave bei einem TPanel.

Und zwar habe ich eine Klasse von TPanel abgeleitet und werte die Messages CM_MOUSEENTER und CM_MOUSELEAVE aus. Es funktioniert soweit ganz gut, nur entsteht nun das Problem, dass der Code in dem Event viel zu oft ausgeführt wird. Wenn ich z.B. ein Showmessage hineinsetze, bekomme ich z.B. beim Enter unendlich viele Message-Boxen, da hilft dann nurnoch Programm killen. So sollte das ja nicht sein, der Code sollte nur einmal beim MouseEnter ausgeführt werden.

Ich habe auch schon andere, fertige Komponenten ausprobiert, da tritt jedoch dasselbe auf.

Wäre schön, wenn jemand wüsste, woran das liegt :)

Vielen Dank im Vorraus
BaYeR

SirThornberry 30. Apr 2006 06:55

Re: Eigene Mouseevents werden zu oft ausgeführt
 
das ganze ist soweit logich. Denn wenn du ein Showmessage aufrufst kommt ein MouseLeave. Wenn die Messagebox dann wieder weg ist und die Maus sich über deinem Panel befindet betritt sie das Panel erneut (MouseEnter) und so geht das immer weiter.

BaYeR 30. Apr 2006 09:37

Re: Eigene Mouseevents werden zu oft ausgeführt
 
hm, in meinen augen ist das nicht logisch, da sich die Boxen nicht über dem Panel befinden. Ich kann auch die Maus über dem Panel ruhen lassen und werde von Message-Boxen erschlagen...


//edit:
ok, es lag wirklich an den Message-Boxen, nun funktioniert alles bis auf das Leave-Event^^

Danke für deine Hilfe :)

Hawkeye219 30. Apr 2006 10:09

Re: Eigene Mouseevents werden zu oft ausgeführt
 
Hallo BaYeR,

jedes Control, das eine CM_MOUSEENTER- oder CM_MOUSELEAVE-Nachricht empfängt, leitet diese an sein übergeordnetes Control weiter. Am Ende dieser Kette steht in der Regel das Formular. Wenn dein Panel also mehrere Controls enthält, wird jede Mausbewegung von einem Control zum einem anderen Nachrichten über dein Panel nach "oben" verschicken.

Gruß Hawkeye


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

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz