程式執行期動態建立暫存目錄,使用結束後移至資源回收筒(可還原)或永久刪除。
TButton:建立、刪除uses ShellApi;
procedure TForm1.btnCreateClick(Sender: TObject);
begin
CreateDirectory(PChar(ExtractFilePath(ParamStr(0)) + 'Test'), nil);
end;
於程式所在目錄下建立 Test 子目錄。
procedure TForm1.btnDeleteClick(Sender: TObject);
var
Op: TSHFileOpStruct;
Path: string;
begin
Path := ExtractFilePath(ParamStr(0)) + 'Test';
FillChar(Op, SizeOf(Op), 0);
with Op do begin
Wnd := 0;
wFunc := FO_DELETE;
pFrom := PChar(Path + #0); // 雙重空字元結尾
pTo := nil;
fFlags := FOF_ALLOWUNDO or FOF_NOERRORUI; // 允許復原、不顯示錯誤 UI
hNameMappings := nil;
lpszProgressTitle := '正在刪除資料夾';
fAnyOperationsAborted := False;
end;
if SHFileOperation(Op) = 0 then
ShowMessage('刪除成功(已移至資源回收筒)')
else
ShowMessage('刪除失敗');
end;
RemoveDirectory(PChar(ExtractFilePath(ParamStr(0)) + 'Test'));
直接刪除,不經資源回收筒,不可還原。
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellApi;
type
TForm1 = class(TForm)
btnCreate: TButton;
btnDelete: TButton;
procedure btnCreateClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
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 Op: TSHFileOpStruct; Path: string;
begin
Path := ExtractFilePath(ParamStr(0)) + 'Test';
FillChar(Op, SizeOf(Op), 0);
with Op do begin
Wnd := 0; wFunc := FO_DELETE; pFrom := PChar(Path + #0); pTo := nil;
fFlags := FOF_ALLOWUNDO or FOF_NOERRORUI;
lpszProgressTitle := '正在刪除資料夾'; fAnyOperationsAborted := False;
end;
SHFileOperation(Op);
end;
end.
點擊「建立」 → 目錄出現;點擊「刪除」 → 目錄進入資源回收筒,可在資源回收筒中還原。