第5章 文件技术编程实例

实例87 将文件删除到回收站中

    

如果操作不慎删除了有用的文件,Windows提供的回收站还可以让我们把文件“找”回来,它可以暂时存储一些删除的文件。本实例将介绍如何通过Delphi程序把文件删除到回收站中。

向窗体上添加一个TLabel组件、一个TEdit组件和一个TButton组件。设计完成的主界面如图5-11所示。

5-11  主界面

首先在程序的uses段中加入ShellApi

在程序运行的过程中,在“Path:”对应的文本框中输入待删除的文件路径和文件名称,然后单击“删除”按钮,程序就会把目标文件删除到回收站,响应代码如下:

procedure TfrmMain.btnDeleteClick(Sender: TObject);

var

    T:TSHFileOpStruct;

    P:String;

begin

    P:=edtPath.Text;

    with T do

    begin

        Wnd:=0;

        wFunc:=FO_DELETE;

        pFrom:=Pchar(P);

        fFlags:=FOF_ALLOWUNDO

    end;

    if SHFileOperation(T)=0 then

        ShowMessage('删除成功')

    else

        ShowMessage('删除失败');

end;

程序通过填充TSHFileOpStruct 类型的对象T的属性来设置本次删除操作可以Undo,当然最终的删除操作是通过SHFileOperation(T)来完成的。如果SHFileOperation函数返回值为0,就表示删除成功,否则表示删除失败。

程序代码如下:

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ShellApi, StdCtrls;

type

  TfrmMain = class(TForm)

    edtPath: TEdit;

    Label1: TLabel;

    btnDelete: TButton;

    procedure btnDeleteClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  frmMain: TfrmMain;

implementation

{$R *.dfm}

 

procedure TfrmMain.btnDeleteClick(Sender: TObject);

var

    T:TSHFileOpStruct;

    P:String;

begin

    P:=edtPath.Text;

    with T do

    begin

        Wnd:=0;

        wFunc:=FO_DELETE;

        pFrom:=Pchar(P);

        fFlags:=FOF_ALLOWUNDO

    end;

    if SHFileOperation(T)=0 then

        ShowMessage('删除成功')

    else

        ShowMessage('删除失败');

end;

end.

保存文件,然后按F9键运行程序,程序运行的初始画面如图5-12所示。

5-12  程序运行的初始画面

在“Path:”对应的文本框中输入待删除的文件路径和文件名称(d:\1.dat),然后单击“删除”按钮,程序就会显示一个提示用户确认删除的对话框,如图5-13所示。

5-13  确认文件删除对话框

单击“是(Y)”按钮,程序就会显示删除操作是否成功的提示信息,如图5-14所示。

5-14  提示信息

通过TSHFileOpStruct可以非常方便地对文件进行删除和拷贝等工作,本程序只是粗略地演示了它的用法,读者还可以进一步发掘,以发挥它的更大用途。