HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Az egér „lebegés” eseményének felhasználása


Példaprogram letöltése

4536 bájt

A Windows-ban található egy olyan esemény, melyet általában elég ritkán találhatunk meg a Delphi komponenseiben. Ez az esemény a „lebegés”. Akkor jön létre mikor az egérrel megállunk egy-egy objektum felett és így egyhelyben állva eltelik egy előre megadott idő.
Képzeljük el azt, hogy lenne egy olyan feladatunk, hogy ha az egérrel rámutatunk egy TLabel komponensre, akkor annak betűtípusa legyen vastag. Ennek megoldása nem lenne nagy probléma. Felhasználva az OnMouseMove eseményt beállítanánk a kívánt betűtípust.
Tovább bonyolítva a helyzetet most az lenne a feladat, hogy csak akkor legyen vastag a betűtípus, ha az egérrel már fél másodperc óta mozdulatlanul a komponens felett áll a felhasználó.
Ez még szintén megoldható az OnMouseMove eseménnyel. Annak létrejöttekor elindíthatunk egy TTimer komponenst és az idő letelte után állítjuk át a betűtípust. Itt viszont már problémákba ütköznénk. Ha elindítjuk a TTimer-t, de a felhasználó közben elmozgatja az egeret egy másik komponens fölé, akkor le kellene állítanunk a számlálást és egy másik komponensnél újra kezdeni azt. Másik gond, ha szintén elmozdítja az egeret, de a komponens felett marad, akkor ismét létrejön az OnMouseMove esemény, ugyanahhoz a komponenshez. Szóval így már problémásabb a helyzet. Nem beszélve arról, hogy ha vastag lett a komponens betűtípusa, de a felhasználó elmozdítja másik komponens fölé az egeret, akkor vissza kellene állítani a betűtípust az eredeti értékre.
De minek szenvedni a TTimer-el, ha nincs is rá egyáltalán szükség, mivel ezt elvégzi helyettünk a Windows, csak meg kell rá kérnünk.

Mellékelt példa megnyitása előtt a HoverLabel.pas-ban lévő komponenst telepítenie kell a Delphi alá.
Ez az új komponens a TStaticText-ből származik. Egyetlen új property-e egy HoverTime-nak nevezett integer típusú property. Itt adhatjuk meg ezredmásodpercben, hogy mennyi idő elteltével jöjjön létre a lebegés eseménye, vagyis a WM_MOUSEHOVER.
Az időzítés indításához tudnunk kell, hogy mikor érkezik az egér a komponens fölé. Ehhez a CM_MOUSEENTER eseményt használjuk fel. Itt a TrackMouseEvent függvényhívással megkérjük a Windows-t, hogy szóljon, vagyis generáljon WM_MOUSEHOVER eseményt alkalmazásunk számára akkor, ha letelik a megadott idő.
A WM_MOUSEHOVER eseményt a DoHover eljárásunk kezeli le. Itt csak át kell állítani a betűtípust vastagra.
Végül már csak annyi van hátra, hogy visszaállítsuk az eredeti betűtípust akkor, ha az egér elhagyta a komponens területét. Ehhez a CM_MOUSELEAVE eseményt használhatjuk fel.

Cikksorozat

#IDKategóriaCikk címeSorozat
1488DelphiMS SQL tárolt eljárások1. rész
1499DelphiMS SQL tárolt eljárások2. rész
1507DelphiMS SQL tárolt eljárások3. rész
1519DelphiMS SQL tárolt eljárások4. rész
1526DelphiMS SQL tárolt eljárások5. rész
1537DelphiMS SQL tárolt eljárások6. rész
1546DelphiMS SQL tárolt eljárások7. rész
1553DelphiMS SQL tárolt eljárások8. rész
1564DelphiMS SQL tárolt eljárások9. rész
1573DelphiMS SQL tárolt eljárások10. rész
1582DelphiMS SQL tárolt eljárások11. rész
1591DelphiMS SQL tárolt eljárások12. rész
1600DelphiMS SQL tárolt eljárások13. rész
1609DelphiMS SQL tárolt eljárások14. rész
1617DelphiMS SQL tárolt eljárások15. rész
1626DelphiMS SQL tárolt eljárások16. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 512. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |