PDA

Ver la Versión Completa : Eliminar mensaje de confirmacion


URBANO
27-01-2008, 15:01:47
Hola Foro, estoy realizando un programa el cual copia unos ficheros de una carpeta a otra, pero si en la carpeta destino existe ya un fichero con el mismo nombre, windows muestra el mensaje de si deseo sobreescribir. Me gustaria saber de que manera puede evitar de que salga ese mensaje e indicarle que sobreescriba todos los ficheros.

Lo mismo me ocurre, cuando elimino una serie de ficheros, antes de eliminar windows muestra el mensaje de confirmacion y me gustaría que este no se muestre y yo desde código indicarle que "Si".

Bueno, si alguien tiene alguna idea.
Gracias y saludos.

ixMike
27-01-2008, 15:17:07
Si utilizas la API de Windows SHFileOperation para copiar/mover/eliminar archivios, creo que hay una opción (un flag) para decirle que no muestre esos mensajes.

Si esto no fuera así, tendrás que usar otras funciones, como DeleteFile y CopyFile, de SysUtils, creo.



Salu2.

URBANO
28-01-2008, 07:52:55
Si utilizo la API de windows. El codigo que utilizo es:

procedure TFnuevoej.copiar(origen, destino: string);
var
Dados: TSHFileOpStruct;
begin
FillChar(Dados,SizeOf(Dados), 0);
with Dados do
begin
wFunc := FO_COPY;
pFrom := PChar(origen+#0);
pTo := PChar(destino+#0);
fFlags:= FOF_SILENT;
end;
SHFileOperation(Dados);
end;

procedure TFnuevoej.borrar(destino: string);
var
Dados: TSHFileOpStruct;
begin
FillChar(Dados,SizeOf(Dados), 0);
with Dados do
begin
Wnd:= Self.Handle;
wFunc := FO_DELETE;
pFrom := PChar(destino+#0);
fFlags:= FOF_SILENT;
end;
SHFileOperation(Dados);
end;

En ambas acciones pongo "Fflags:= FOF_SILENT" y creo que esto es a lo que te refieres, pero me sigue saliendo igual los mensajes de windows.

dec
28-01-2008, 12:02:59
Hola,

Podrías revisar la ayuda de la función "SHFileOperation()". La "bandera" que usas sirve para no mostrar el diálogo de progreso en la tarea, pero, no para lo que quieres hacer. En todo caso tendrías que combinarla con la bandera "FOF_NOCONFIRMATION" e incluso con la bandera "FOF_NO_UI".

URBANO
01-02-2008, 01:15:31
Tienes razon he combinado las banderas:

fFlags:= FOF_SILENT or FOF_NOCONFIRMATION;

Y ya no me pide la confirmacion de borrar, ni la de sobreescribir.

Gracias.