Zdarzenie opuszczenia komponentu

0

Witam tak sie zastanawiam bo nie wiem jak to rozgryźć a mianowicie chce uzyskać efekt taki ze po najechaniu na komponent zmienia sie image a po opuszczeniu chce żeby to wróciło do dawnej postaci mogę praktycznie zrobić ze przy formie napisze onmausemove ale czasami kursorem można sprytnie uciec z komponentu nie nachodząc na formę... ma ktoś jakiś pomysł żeby to sensownie rozwiązać?

0

Newbie,
OnMouseEnter, OnMouseLeave

0

OnMouseLeave ma Label a Image juz nie co wtedy?

0
mgs_saladin napisał(a)

OnMouseLeave ma Label a Image juz nie co wtedy?

Image nie ma takiego zdarzenia?
No cóż, możesz sprawdzać w onMouseMove współrzędne kursora(jeśli mniejsze od 0 to znaczy, że opuściło). Albo możesz napisać własny komponent dziedziczący po TImage, w którym zaimplementujesz zdarzenie OnMouseLeave. Podpowiem, że jest to związane z komunikatem Windows WM_MouseLeave.
A więc Twoja robota ograniczy się do przechwycenia tego komunikatu i oprogramowania go. Tylko pamiętaj, że musisz to zrobić z poziomu komponentu. Bo z tego, co wiem to nie ma innej możliwości.

0

@mgs_saladin : TImage również obsługuje OnMouseLeave...

0

Grudziecki ---> ale nie widze tego we własnościach

0
mgs_saladin napisał(a)

mogę praktycznie zrobić ze przy formie napisze onmausemove

Nie wiem jaką tam masz wersję Delphi, ale ja mam D7 Personal i przy Image mam OnMouseMove. Więc zamiast programować to zdarzenie dla formy, zaprogramuj dla Image.
Jeśli tego zdarzenia też nie masz to, postaw na formę labela, ustaw jego Caption na '', wysokość, szerokość i pozycje taką jaką ma Image, Transparent na True, w razie gdyby Image go przykrywał to Bring To Front i dla niego masz takie zdarzenia jak: OnMouseDown, OnMouseEnter, OnMouseLeave, OnMouseMove, OnMouseUp i masz w czym wybierać.

@Edit

Juhas napisał(a)

No jaaa, jest to rozwiązanie, ale okrutnie lamerskie.

[rotfl]
Najważniejsze, że wykonanie jest szybkie i będzie działać. BTW wybór i tak dokona autor tematu.

0
Grzegorz16 napisał(a)

Jeśli tego zdarzenia też nie masz to, postaw na formę labela, ustaw jego Caption na '', wysokość, szerokość i pozycje taką jaką ma Image, Transparent na True, w razie gdyby Image go przykrywał to Bring To Front

No jaaa, jest to rozwiązanie, ale okrutnie lamerskie. Zrób tak, ja Ci mówię. Napisz własny komponent dziedziczący po TImage i implementujący dodatkowo zdarzenie OnMouseLeave. Możesz se przy okazji dodać OnMouseEnter

1 użytkowników online, w tym zalogowanych: 0, gości: 1