Si queremos hacer una operación de este tipo al estilo Windows, el siguiente ejemplo mueve un fichero que indicamos a la unidad A: utilizando la función SHFileOperation() que recibe como parámetro una estructura TSHFileOpStruct. La función devuelve un valor 0 si no encuentra errores.
procedure TForm1.Button1Click(Sender: TObject); var lpFileOp: TSHFileOpStruct; begin { Relleno de la estructura } lpFileOp.Wnd := Self.Handle; lpFileOp.wFunc := FO_MOVE; lpFileOp.pFrom := PChar('C:\d51.gif' + #0#0); lpFileOp.pTo := PChar('A:\' + #0#0); lpFileOp.fFlags:= FOF_SIMPLEPROGRESS or FOF_FILESONLY; lpFileOp.fAnyOperationsAborted := FALSE; lpFileOp.hNameMappings := nil; lpFileOp.lpszProgressTitle := PChar('Trasladando archivos al disco D' + #0#0); { Mover el archivo } SHFileOperation(lpFileOp); end;
Si en lugar de moverlo queremos hacer una copia lo conseguimos sustituyendo en las líneas anteriores:
lpFileOp.wFunc := FO_COPY;
Si es borrar el fichero:
lpFileOp.wFunc := FO_DELETE;
e ignora la línea
lpFileOp.pTo := PChar(‘A:\’ + #0#0);
Si se trata de renombrarlo:
lpFileOp.wFunc := FO_RENAME;
Ważne artykuły