
A mellékelt példaprogram megnyitása előtt a MouseHide.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens Interval tulajdonságában adhatjuk meg, hogy az egérkurzor hány másodperc múlva tűnjön el a képernyőről, ha az egér egy helyben áll. Az Interval értékének megadása ugyanolyan módon történik, mint a TTimer komponens esetében. A megadott érték ezredmásodpercet jelent.
A komponens működését az Enabled tulajdonság értékének igazra vagy hamisra állításával indíthatjuk el, illetve állíthatjuk meg. Ha az Enabled értékét fejlesztési időben igazra állítjuk, akkor az egérkurzor eltüntetésének algoritmusa ott is működik.
Komponensünket a TComponent osztályból származtatjuk. A komponens működésének lényege, hogy ha az egérkurzor megadott ideig ugyanarra a koordinátára mutat, akkor azt el kell rejteni. Majd ha az egér megmozdul, akkor a kurzort ismét meg kell jeleníteni.
A Delphi-ben rendelkezésünkre áll a TMouse osztály. Az osztály a Controls unitban van implementálva. Ezt az osztályt felhasználhatjuk arra, hogy az egérkurzor aktuális pozícióját le tudjuk kérdezni. Az osztályból elég egyetlen példányt létrehoznunk, hogy a koordinátákat lekérdezhessük. Mivel az egér pozícióját sűrűn le kell kérdeznünk, célszerű létrehozni egy globális, TMouse típusú változót. Az egérkurzor X és Y pozícióját az alábbi módon határozhatjuk meg.
x:=FMouse.CursorPos.X;
y:=FMouse.CursorPos.Y;
A kurzor eltüntetését és megjelenítését a ShowCursor, API függvénnyel irányíthatjuk. A függvény igaz paraméter esetén láthatóvá teszi a kurzort, hamis érték esetén pedig eltünteti.
A ShowCursor függvény használata nem olyan egyszerű, mint amilyennek első ránézésre tűnik. Az egérkurzor állapotához a háttérben egy egész szám van rendelve. A kurzor akkor látható, ha ennek a számnak az értéke 0, vagy ennél nagyobb szám. Amikor meghívjuk a ShowCursor függvényt, akkor igaz paraméter esetén ez a szám eggyel nő, hamis érték esetén eggyel csökken. Ez azt jelenti, hogy ugyanannyiszor kell meghívnunk a függvényt hamis paraméterrel, ahányszor azt igaz paraméterrel hívtuk meg és fordítva.
Ennél sokkal egyszerűbb, ha a függvény használatához felveszünk egy Boolean típusú segédváltozót (FVisibleCursor). Ha a kurzor látható, akkor az FVisibleCursor értékét igazra, ha nem látható, akkor hamisra állítjuk. Felhasználva az FVisibleCursor értékét, eldönthetjük, hogy a ShowCursor metódust újra meg kell-e hívnunk, vagy sem.
if not FVisibleCursor then begin
ShowCursor(True);
FVisibleCursor:=True;
end;
Mint azt a fenti példa is mutatja, a ShowCursor függvény csak akkor kerül meghívásra, ha az FVisibleCursor értéke hamis. Ezzel megoldhatjuk azt, hogy ne hívjuk meg kétszer egymás után a függvényt, ugyanolyan paraméterrel.
A komponens működéséhez két Timer objektumot kell felhasználnunk. Az FCheckTimer objektumnak fél másodpercenként le kell kérdeznie az egérkurzor aktuális pozícióját. Az Interval tulajdonságban megadott idő eltelését az FTimer objektum felügyeli. Az FTimer-nek az a dolga, hogy amikor az általa mért idő letelik, tegye láthatatlanná a kurzort.
A kurzor eltüntetésének és megjelenítésének műveletét az FCheckTimer, OnTimer eseményében felügyeljük. Az FLastX és FLastY változókban eltároljuk a kurzor előző koordinátáit.
Ha az előző koordináták megegyeznek az aktuális koordinátákkal, akkor az azt jelenti, hogy az egér mozdulatlan. Ilyenkor az FTimer objektum Enabled értékét igazra kell állítanunk, hogy elinduljon az Interval tulajdonságban megadott idő múlása.
Ha az előző koordináták értéke nem egyezik meg az aktuális koordináták értékével, akkor az azt jelenti, hogy az egér megmozdult. Ilyenkor az FTimer objektum által számolt időt újra kell indítanunk, el kell mentenünk az új koordinátákat az FLastX és FLastY változókba, valamint láthatóvá kell tennünk a kurzort, ha az eddig láthatatlan volt.