向窗体上添加两个TButton组件,一个用于创建新的文件夹,另一个用于删除新创建的文件夹,设计完成的窗体如图1所示。wKPHTML5中文学习网 - HTML5先行者学习网

图1 主界面wKPHTML5中文学习网 - HTML5先行者学习网
首先在程序的uses段中添加对ShellApi的引用,另外还要在“创建”按钮的响应过程中添加下列代码:wKPHTML5中文学习网 - HTML5先行者学习网
procedure TForm1.btnCreateClick(Sender: TObject);wKPHTML5中文学习网 - HTML5先行者学习网
beginwKPHTML5中文学习网 - HTML5先行者学习网
CreateDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’),nil);wKPHTML5中文学习网 - HTML5先行者学习网
end;wKPHTML5中文学习网 - HTML5先行者学习网
程序运行初期就会执行CreateDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’),nil)语句,在程序实例所在的目录中创建一个子目录test。wKPHTML5中文学习网 - HTML5先行者学习网
在程序运行过程中,单击“删除”按钮就可以将新创建的test子目录删除,响应代码如下:wKPHTML5中文学习网 - HTML5先行者学习网
procedure TForm1.btnDeleteClick(Sender: TObject);wKPHTML5中文学习网 - HTML5先行者学习网
varwKPHTML5中文学习网 - HTML5先行者学习网
T:TSHFileOpStruct;wKPHTML5中文学习网 - HTML5先行者学习网
P:String;wKPHTML5中文学习网 - HTML5先行者学习网
beginwKPHTML5中文学习网 - HTML5先行者学习网
P:=ExtractFilePath(ParamStr(0))+’Test’;wKPHTML5中文学习网 - HTML5先行者学习网
with T dowKPHTML5中文学习网 - HTML5先行者学习网
beginwKPHTML5中文学习网 - HTML5先行者学习网
Wnd:=0;wKPHTML5中文学习网 - HTML5先行者学习网
wFunc:=FO_DELETE;wKPHTML5中文学习网 - HTML5先行者学习网
pFrom:=PChar(P);wKPHTML5中文学习网 - HTML5先行者学习网
pTo:=nil;wKPHTML5中文学习网 - HTML5先行者学习网
fFlags:=FOF_ALLOWUNDO+FOF_NOERRORUI;wKPHTML5中文学习网 - HTML5先行者学习网
hNameMappings:=nil;wKPHTML5中文学习网 - HTML5先行者学习网
lpszProgressTitle:=’正在删除文件夹’;wKPHTML5中文学习网 - HTML5先行者学习网
fAnyOperationsAborted:=False;wKPHTML5中文学习网 - HTML5先行者学习网
end;wKPHTML5中文学习网 - HTML5先行者学习网
SHFileOperation(T);wKPHTML5中文学习网 - HTML5先行者学习网
end;wKPHTML5中文学习网 - HTML5先行者学习网
程序通过填充TSHFileOpStruct 类型的对象T的属性来设置本次删除操作可以Undo,当然最终的删除操作是通过SHFileOperation(T)来完成的。如果SHFileOperation函数返回值为0,就表示删除成功,否则表示删除失败。wKPHTML5中文学习网 - HTML5先行者学习网
如果用户在程序中想要直接删除test子目录,可以直接通过调用RemoveDirectory (Pchar(ExtractFilePath(ParamStr(0))+’Test’))语句来实现wKPHTML5中文学习网 - HTML5先行者学习网
程序代码如下:wKPHTML5中文学习网 - HTML5先行者学习网
unit Unit1;wKPHTML5中文学习网 - HTML5先行者学习网
interfacewKPHTML5中文学习网 - HTML5先行者学习网
useswKPHTML5中文学习网 - HTML5先行者学习网
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,wKPHTML5中文学习网 - HTML5先行者学习网
Dialogs, StdCtrls, ShellApi;wKPHTML5中文学习网 - HTML5先行者学习网
typewKPHTML5中文学习网 - HTML5先行者学习网
TForm1 = class(TForm)wKPHTML5中文学习网 - HTML5先行者学习网
btnCreate: TButton;wKPHTML5中文学习网 - HTML5先行者学习网
btnDelete: TButton;wKPHTML5中文学习网 - HTML5先行者学习网
procedure btnCreateClick(Sender: TObject);wKPHTML5中文学习网 - HTML5先行者学习网
procedure btnDeleteClick(Sender: TObject);wKPHTML5中文学习网 - HTML5先行者学习网
privatewKPHTML5中文学习网 - HTML5先行者学习网
{ Private declarations }wKPHTML5中文学习网 - HTML5先行者学习网
publicwKPHTML5中文学习网 - HTML5先行者学习网
{ Public declarations }wKPHTML5中文学习网 - HTML5先行者学习网
end;wKPHTML5中文学习网 - HTML5先行者学习网
varwKPHTML5中文学习网 - HTML5先行者学习网
Form1: TForm1;wKPHTML5中文学习网 - HTML5先行者学习网
implementationwKPHTML5中文学习网 - HTML5先行者学习网
{$R *.dfm}wKPHTML5中文学习网 - HTML5先行者学习网
procedure TForm1.btnCreateClick(Sender: TObject);wKPHTML5中文学习网 - HTML5先行者学习网
beginwKPHTML5中文学习网 - HTML5先行者学习网
CreateDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’),nil);wKPHTML5中文学习网 - HTML5先行者学习网
end;wKPHTML5中文学习网 - HTML5先行者学习网
procedure TForm1.btnDeleteClick(Sender: TObject);wKPHTML5中文学习网 - HTML5先行者学习网
varwKPHTML5中文学习网 - HTML5先行者学习网
T:TSHFileOpStruct;wKPHTML5中文学习网 - HTML5先行者学习网
P:String;wKPHTML5中文学习网 - HTML5先行者学习网
beginwKPHTML5中文学习网 - HTML5先行者学习网
P:=ExtractFilePath(ParamStr(0))+’Test’;wKPHTML5中文学习网 - HTML5先行者学习网
with T dowKPHTML5中文学习网 - HTML5先行者学习网
beginwKPHTML5中文学习网 - HTML5先行者学习网
Wnd:=0;wKPHTML5中文学习网 - HTML5先行者学习网
wFunc:=FO_DELETE;wKPHTML5中文学习网 - HTML5先行者学习网
pFrom:=PChar(P);wKPHTML5中文学习网 - HTML5先行者学习网
pTo:=nil;wKPHTML5中文学习网 - HTML5先行者学习网
fFlags:=FOF_ALLOWUNDO+FOF_NOERRORUI;wKPHTML5中文学习网 - HTML5先行者学习网
hNameMappings:=nil;wKPHTML5中文学习网 - HTML5先行者学习网
lpszProgressTitle:=’正在删除文件夹’;wKPHTML5中文学习网 - HTML5先行者学习网
fAnyOperationsAborted:=False;wKPHTML5中文学习网 - HTML5先行者学习网
end;wKPHTML5中文学习网 - HTML5先行者学习网
SHFileOperation(T);wKPHTML5中文学习网 - HTML5先行者学习网
//RemoveDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’));wKPHTML5中文学习网 - HTML5先行者学习网
end;wKPHTML5中文学习网 - HTML5先行者学习网
end.wKPHTML5中文学习网 - HTML5先行者学习网
保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。wKPHTML5中文学习网 - HTML5先行者学习网

图2 程序运行的初始画面wKPHTML5中文学习网 - HTML5先行者学习网
单击“创建”按钮就会在程序实例所在的目录中创建一个子目录test,单击“删除”按钮就可以将新创建的test子目录删除。wKPHTML5中文学习网 - HTML5先行者学习网
本实例介绍了如何创建文件夹,并且为删除文件夹提供了两种途径——一种是删除文件夹到回收站中,另外一种就是直接删除。wKPHTML5中文学习网 - HTML5先行者学习网