AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

über welchem objekt ist die maus

Ein Thema von Andreas L. · begonnen am 6. Apr 2007 · letzter Beitrag vom 7. Apr 2007
Antwort Antwort
Andreas L.
(Gast)

n/a Beiträge
 
#1

über welchem objekt ist die maus

  Alt 6. Apr 2007, 17:26
Hi,
ich habe mir selbst einen Button, bestehend aus einem Label und 2 Images gebaut. Das 2te Image soll quasi ein Hovereffekt sein. Also blende ich im onMouseEnter das erste Bild aus und der 2te ein. Im OnMouseLeave des zweiten Bildes blende ich das erste Bild ein und das 2te aus. Problem: Kommt man mit der Maus auf das Label (das soll man sogar) wird das OnmouseLeave-Eregnis ausgelöst. Jetzt dachte ich mir, ich bau eine Abfrage im OnMouseOut ein und schaue ob sich die Maus über dem Label befindet. Ist dies wahr, bleibt das Hoverbild da, wo es ist.

Doch wie stelle ich fest über welcher Komponente sich die Maus befindet?

Schonmal vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: über welchem objekt ist die maus

  Alt 6. Apr 2007, 17:30
Warum prüfst du nicht einfach, ob die Mauskoordinaten innerhalb des Labels liegen ?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: über welchem objekt ist die maus

  Alt 6. Apr 2007, 17:36
Zitat von Khabarakh:
Warum prüfst du nicht einfach, ob die Mauskoordinaten innerhalb des Labels liegen ?
Daran habe ich auch schon gedacht. Ist aber ziemlich viel Aufwand... gibt es denn nicht eine einfachere Lösung?
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#4

Re: über welchem objekt ist die maus

  Alt 6. Apr 2007, 17:40
Delphi-Quellcode:
Function MouseInLabel : boolean;
begin
result := false;
if (mouse.x > label1.left) and (mouse.x < (label1.left + label1.width))
and (mouse.y > label1.top) and (mouse.y < (label1.top + label1.height)) then
  result := true;
end;
Einfach noch so umschreiben, dass man das Label und die Mauskoordinaten übergeben kann. Sieht für mich nicht sonderlich kompliziert aus.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

Re: über welchem objekt ist die maus

  Alt 6. Apr 2007, 17:41
Da habe ich wohl zu kompliziert gedacht

Vielen Dank für den Code
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: über welchem objekt ist die maus

  Alt 6. Apr 2007, 17:45
Also wenn du das kompliziert nennst ...

  if not PtInRect(Image.BoundsRect, Parent.ScreenToClient(Mouse.Position)) then [...] PS: Meinte eigentlich schon im letzten Beitrag das Image, dadurch wird das Ganze unabhängig vom Inhalt
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#7

Re: über welchem objekt ist die maus

  Alt 6. Apr 2007, 17:48
Zitat von Khabarakh:
Also wenn du das kompliziert nennst ...

  if not PtInRect(Image.BoundsRect, Parent.ScreenToClient(Mouse.Position)) then [...] PS: Meinte eigentlich schon im letzten Beitrag das Image, dadurch wird das Ganze unabhängig vom Inhalt
Also da bekomme ich ne Zugriffsverletzung...

Hab Mouse.Position durch Mouse.CursorPos ersetzt da es bei mir kein Position gab.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: über welchem objekt ist die maus

  Alt 6. Apr 2007, 18:22
Das schiebe ich zu einem Drittel auf das wirklich strunzdumme IntelliSense von D6 und zu einem weiteren Drittel auf die nicht sehr logische Benennung der Eigenschaft und zu einem letzten Drittel war es einfach eine Aufgabe an dich . Aber eine AV ist trotzdem interessant, eigentlich sollte es gar nicht kompilieren.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#9

Re: über welchem objekt ist die maus

  Alt 6. Apr 2007, 18:41
Ahh, parent muss Image2 heißen. Das habe ich ja voll übersehen

Danke

EDIT: Aber wenn ich mit der Maus von obenher auf das Bild fahre gehts nicht. Nur von links, rechts und unten. Wieso?
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: über welchem objekt ist die maus

  Alt 7. Apr 2007, 10:15
Die Funktion FindVCLWindow liefert das entsprechende Control zu einem Punkt, vielleicht geht es damit besser.

Edit: Bzw. funktioniert mit einem fensterlosen Label natürlich gar nicht, aber daran denkt man halt erst, nachdem man sich blamiert hat.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 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