Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - OnMousOver / OnMouseOut
FriFra - Sa 31.05.03 10:06
Titel: OnMousOver / OnMouseOut
Wie kann ich die Ereignisse OnMousOver / OnMouseOut implementieren?
OnMouseOver ist noch recht simpel, da es ja bereist OnMouseMove gibt, welches man auch dafür verwenden kann.
Schwierig wird es allerdings mit dem Herausfinden, ob die Maus nicht mehr über dem Element liegt... Ich habe schon versucht dafür OnMouseMove des übergeodneten Control zu nutzen, dass klaptt allerdings nicht immer. Wenn man die Maus sehr schnell aus dem Form herausführt "merkt" das übergeordnete Control manchmal nicht, dass gerade die Maus drüber geführt wurde...
GSE - Sa 31.05.03 10:12
Mit ´nem Timer!
Aber wenn ich mich recht erinnere haben manche Controls schon die Ereignisse OnMouseEnter und OnMouseExit.
mfg
GSE
FriFra - Sa 31.05.03 10:24
An einen Timer habe ich auch schon gedacht, aber wenn ich die Mausposition abfrage bekomme ich ja die Screenkoordinazten. Wie bekomme ich nun sicher heraus an welcher absoluten Position sich das entspr. Control auf dem Screen befindet?
Man könnte meinen die Position wäre Form.Left+Form.Borderwidth+MyControl.Left (linker Rand) und Form.Top+Form.Borderwidth+MyControl.Top (Oberkante), aber schon bei der Oberkante tritt das Problem auf, dass ich nicht weis wie hoch die Titlebar ist (kann je nach Theme varieren)... :roll:
CenBells - Sa 31.05.03 10:27
hallo,
du musst folgende nachrichten abfangen
Delphi-Quelltext
1: 2:
| procedure CMMouseEnter(var msg: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE; |
Gruß
Ken
FriFra - Sa 31.05.03 10:55
Wie binde ich dieses Messagehandling so ein, dass ich z.B. herausfinde das die Maus auf Edit1 bzw. aus Edit1 bewegt wird?
CenBells - So 01.06.03 10:45
hallo,
also, ich glaube, du musst eine eigene komponente ableiten. Und dann in der neuen Edit komponente im private teil die beiden oben erwähnten prozeduren einbinden und dann kannst du dort halt den zugriff auf ein event realisieren...
zb
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| private FMouseEnter: TNotifyEvent; protected procedure DoMouseEnter(); published property OnMouseEnter: TNotifyEvent read F... ...
procedure TMeinEdit.CMMouseEnter(var msg: TMessage); message CM_MOUSEENTER; begin DoMouseEnter; end; ... procedure TMeinEdit.DoMouseEnter(); begin if assigned(FMouseEnter) then FMouseEnter(Self); end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!