procedure TForm1.btnCreateClick(Sender: TObject); begin CreateDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’),nil); end; 程序运行初期就会执行CreateDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’),nil)语句,在程序实例所在的目录中创建一个子目录test。
在程序运行过程中,单击“删除”按钮就可以将新创建的test子目录删除,响应代码如下:
procedure TForm1.btnDeleteClick(Sender: TObject); var T:TSHFileOpStruct; P:String; begin P:=ExtractFilePath(ParamStr(0))+’Test’; with T do begin Wnd:=0; wFunc:=FO_DELETE; pFrom:=PChar(P); pTo:=nil; fFlags:=FOF_ALLOWUNDO+FOF_NOERRORUI; hNameMappings:=nil; lpszProgressTitle:=’正在删除文件夹’; fAnyOperationsAborted:=False; end; SHFileOperation(T); end; 程序通过填充TSHFileOpStruct 类型的对象T的属性来设置本次删除操作可以Undo,当然最终的删除操作是通过SHFileOperation(T)来完成的。如果SHFileOperation函数返回值为0,就表示删除成功,否则表示删除失败。
type TForm1 = class(TForm) btnCreate: TButton; btnDelete: TButton; procedure btnCreateClick(Sender: TObject); procedure btnDeleteClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; implementation {$R *.dfm}
procedure TForm1.btnCreateClick(Sender: TObject); begin CreateDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’),nil); end;
procedure TForm1.btnDeleteClick(Sender: TObject); var T:TSHFileOpStruct; P:String; begin P:=ExtractFilePath(ParamStr(0))+’Test’; with T do begin Wnd:=0; wFunc:=FO_DELETE; pFrom:=PChar(P); pTo:=nil; fFlags:=FOF_ALLOWUNDO+FOF_NOERRORUI; hNameMappings:=nil; lpszProgressTitle:=’正在删除文件夹’; fAnyOperationsAborted:=False; end; SHFileOperation(T); //RemoveDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’)); end; end. 保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。