Borrar ficheros enviandolos a la papelera de Windows  

Enviado Por: Q3 Team
Web : http://www.q3.nu
Email: dlib@q3.nu
Fecha: 12/02/00

Truco accedido 68 veces

 


  • Añade 'ShellApi' en el uses de tu form
  • Y utiliza esta función:


     function ALaPapelera(Fichero:string):boolean;
     var
       FileOp: TSHFileOpStruct;
     begin
       if FileExists(Fichero)then
       begin
         FillChar(FileOp,SizeOf(FileOp),#0);
         With FileOp do
         begin
           Wnd:= Application.Handle;
           wFunc:= FO_DELETE;
           pFrom:= PChar(Fichero+#0#0);
           fFlags:= FOF_SILENT or FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
         end;
         Result:= (ShFileOperation(FileOp)=0);
       end else
         Result:=False;
     end;
    



    Un ejemplo de llamada:


     procedure TForm1.Button1Click(Sender: TObject);
     begin
       if NOT ALaPapelera ('c:\kk\Fichero.txt') then
          ShowMessage('No se pudo borrar el fichero/Can not delete file');
     end;
    




    Actualización del 08/08/99:

    Con una sóla llamada podemos tambien borrar más de un fichero. Se haría así:


     procedure TForm1.Button1Click(Sender: TObject);
     begin
       if NOT ALaPapelera ('c:\kk\Fichero1.txt'+#0+'c:\windows\Fichero2.txt') then
          ShowMessage('No se pudo borrar el fichero/Can not delete file');
     end;
    



    Simplemente separalos con un caracter 0 ( #0)


    Para borrar un subdirectorio... pues sirve la misma función... por ejemplo:


     ALaPapelera ('c:\UnDirectorio');
    




    Actualizado el 10/02/2000