A komponens OldName és NewName tulajdonságaiban kell megadnunk az állomány régi és új nevét, az elérési utakkal együtt.
Az Options tulajdonság logikai értékeket tartalmaz, melyek közül egyszerre többet is bekapcsolhatunk. Egy érték akkor van bekapcsolva, ha igazra állítjuk. Az értékek a következők:
| Tulajdonság |
Hatás |
| COPY_ALLOWED |
A mozgatás két fázisban történik. A rendszer a mozgatást egy másolással és egy törléssel valósítja meg. |
| DELAY_UNTIL_REBOOT |
A mozgatás csak akkor jön létre, amikor a rendszer újraindul. Hatástalan, ha a COPY_ALLOWED be van kapcsolva. |
| REPLACE_EXISTING |
A már létező célállomány felülírása. |
| WRITE_THROUGH |
Gondoskodik arról, hogy a másolási művelet végén a teljes állomány ki legyen írva lemezre a memóriából. A DELAY_UNTIL_REBOOT-al együtt hatástalan. |
Miután a mozgatás paramétereit beállítottuk, meg kell hívnunk a Move metódust.
A függvény visszatérési értéke igaz, ha a művelet végrehajtható volt.
A komponens OnMove eseménye minden egyes alkalommal lefut, amikor egy áthelyezés alatt álló állomány legalább egy százaléknyi része átmásolásra kerül. Így ez az esemény maximum százszor fut le.
A komponenst a TComponent osztályból származtatjuk. Hogy az Option tulajdonság választható elemeket tartalmazzon, az alábbi típusdeklarációt kell elvégeznünk:
TOption=(COPY_ALLOWED, DELAY_UNTIL_REBOOT, REPLACE_EXISTING, WRITE_THROUGH);
TOptions= set of TOption;
Így az Options tulajdonság TOptions típusú lesz.
A mozgatás végrehajtásához a MoveFileWithProgress API függvényt használjuk. A függvényben megadható paraméterek típusa Cardinal, ezért a bejelölt elemeket egy ilyen típusú változó segítségével adjuk át paraméterként. Ehhez létre kell hoznunk a Flags változót, amelynek tartalmához minden egyes bejelölt elem esetén hozzáadjuk annak a rendszer által definiált értékét.
if COPY_ALLOWED in FOptions then Flags:=Flags+MOVEFILE_COPY_ALLOWED;
A MoveFile függvény és paraméterei.
MoveFileWithProgress(PChar(FOldName),PChar(FNewName),@Progress,Self,Flags);
A függvény harmadik paramétere maga is egy függvény, melyre a @ cím operátor segítségével hivatkozhatunk. A Progress függvény paraméterlistája kötött, ezt a MoveFileWithProgress határozza meg. A negyedik paramétert megkapja a Progress függvény. Itt tudjuk átadni neki magát a TMoveFile objektumot, amely az lpData változóba kerül.
function Progress(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: LARGE_INTEGER;
dwStreamNumber, dwCallbackReason: DWORD; hSourceFile, hDestinationFile: THANDLE; lpData: Pointer): DWORD; stdcall;
Ez a függvény minden egyes alkalommal lefut, amikor a fájl egy újabb része áthelyezésre kerül. A Progress függvényben kell gondoskodnunk az OnMove esemény lefutásáról. Annak minden egyes alkalommal le kell futnia, amikor legalább egy százalékos változás történik.
if i*100>Percent then begin
if Assigned(MF.OnMove) then MF.OnMove(MF);
Inc(Percent);
end;
A MoveFileWithProgress függvény visszatérési értékét adjuk vissza a Move függvény visszatérési értékeként.