HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Az egér mozgásának felvétele


Példaprogram letöltése

5728 bájt

Számos oktatóprogramban találkozhatunk olyan funkcióval, hogy a számítógép saját maga vezérli az egér mozgását. Például ezzel megmutatva, hogy hova kell kattintanunk. Készítünk egy komponenst, amely segítségével mi is felvehetjük az egérkurzor mozgását, majd visszajátszhatjuk azt. A komponens lehetőséget biztosít arra is, hogy a mozgást elmentsük egy állományba, vagy onnan betöltsük.

A mellékelt példaprogram megnyitása előtt a MouseRecord.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens használata
A komponens nem rendelkezik tulajdonságokkal csak metódusokkal.
Az egér mozgásának felvételét a StartRecord metódus meghívásával indíthatjuk el.
A mozgás felvétele egészen addig zajlik, még valamilyen más metódust meg nem hívunk. A felvételt bármikor befejezhetjük a Stop metódus meghívásával.
Az egér mozgásának visszajátszását a Play metódus indítja. Ezt is a Stop utasítással állíthatjuk meg.
A komponens lehetőséget biztosít arra, hogy a felvett mozgást elmentsük egy állományba.
function SaveToFile(FileName: String): Boolean;
A FileName paraméterben bármilyen fájlnevet megadhatunk. A mozgás ebbe az állományba kerül elmentésre. A függvény igaz értékkel tér vissza, ha a mentés sikeres volt. Ha nem létezik a memóriában felvett adat, a visszatérési érték akkor is hamis lesz.
Az elmentett állományt a LoadFromFile metódussal tölthetjük be a memóriába.
function LoadFromFile(FileName: String): Boolean;
A függvény visszatérési értéke igaz, ha a betöltés sikeres volt.
A komponens elkészítése
A komponenst a TComponent osztályból származtatjuk.
Az egér mozgásának felvételéhez és visszajátszásához két külön Timer komponensre van szükség. Az időzítők Interval tulajdonságát célszerű minél kisebb értékre állítani, hogy a rögzített mozgás kellő finomságú legyen.
A mozgást úgy tudjuk rögzíteni, hogy az időzítő által meghatározott ütemben elmentjük az egér koordinátáit. A koordinátákat egy dinamikus tömbben tároljuk, amelyet az alábbi módon deklarálhatunk.
FMoves: array of TPoint;
A StartRecord metódusban aktiválnunk kell az FRecordTimer-t. A dinamikus tömb kezdeti méretét pedig nullára kell állítani.
SetLength(FMoves,0);
A felvétel során az FIndex változó értéke fogja mutatni a tömb utolsó elemének indexét. A tömb feltöltése és méretezése az FRecordTimer OnTimer metódusában történik.
Az egérkurzor pozíciójához a TMouse osztályon keresztül férhetünk hozzá. Ehhez elég felvennünk egy globális változót. Ezen keresztül lekérdezhetjük és be is állíthatjuk az egér helyét a képernyőn.
FMoves[FIndex]:=FMouse.CursorPos;
A Stop metódusban nincs más teendőnk, mint a két időzítőt kikapcsolni.
Amikor a Play metódussal elkezdjük visszajátszani a mozgást, az FPlayTimer-t kell bekapcsolnunk. Az OnTimer eseményében végig kell haladnunk a dinamikus tömbön és az egeret a soron következő koordinátákra kell irányítanunk. Itt is az FIndex változó mutatja a soron következő elemet.
A SaveToFile metódusban a memóriatömb tartalmát lemezre kell mentenünk. Ehhez egy típusos állományt használunk.
f: File of TPoint;
A mentés algoritmusa a következő.
AssignFile(f,FileName);
Rewrite(f);
for i:=0 to Length(FMoves)-1 do
 Write(f,FMoves[i]);
CloseFile(f);
A LoadFromFile metódusban meg kell nyitnunk az állományt és a beolvasott koordinátákkal kell feltöltenünk az FMoves dinamikus tömböt.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 61. 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 |