
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.
A StartRecord metódusban aktiválnunk kell az FRecordTimer-t. A dinamikus tömb kezdeti méretét pedig nullára kell állítani.
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.
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.