程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi設計文件管理器-代碼分析

Delphi設計文件管理器-代碼分析

編輯:Delphi

用Delphi設計制作一個文件管理器。在上一文中主要介紹了這種資源管理器的設計思路和編寫步驟,若要了解請參見“Delphi設計資源管理器 原理及思路”。本節主要介紹文件管理器的具體代碼編寫,對一些關鍵性代碼進行分析。

(1)如果想在程序運行過程中,動態跟蹤驅動器的變化,就要在DriveComboBox 控件的DriveComboBox1Change()事件中添加響應驅動器改變的代碼,其中最為關鍵的一句是:Form1.DirectoryListBox1.Drive:=Form1.DriveComboBox1.Drive,將它的變化通知給DirectoryListBox,使它們在內容上保持一致。

procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
Form1.DirectoryListBox1.Drive:=Form1.DriveComboBox1.Drive;
//跟蹤DriveComboBox 的變化
end;

(2)在程序運行時,要隨時使四個控件在內容上保持一致,一個控件的內容發生了變化,應該隨時通知其他文件類型控件。當DirectoryListBox 控件發生變化時,應該添加相應TForm1.DirectoryListBox1Change()事件。

procedure TForm1.DirectoryListBox1Change(Sender: TObject);
begin
Form1.FileListBox1.Directory:=Form1.DirectoryListBox1.Directory;
//跟蹤DirectoryListBox 的變化
end;

(3)當文件列表框中文件發生變化時,Edit 文本框中的文件路徑也要發生相應變化,應該添加相應的TForm1.FileListBox1Change()事件。

procedure TForm1.FileListBox1Change(Sender: TObject);
begin
Edit1.Text:=filelistbox1.Directory; //Edit 文本框中添加文件路徑
end;

(4)當點擊文件列表框中的文件名時,路徑文本框中添加相關文件的名字,這需要添加TForm1.FileListBox1Click()事件。

procedure TForm1.FileListBox1Click(Sender: TObject);
begin
Edit1.Text:=filelistbox1.FileName; //Edit 文本框中添加文件名
end;

(5)當點擊“刪除文件夾”按鈕時,程序給出“你想刪除文件夾嗎?”的提示,如果確認之後,程序執行刪除相關文件夾的操作,如果相關文件夾不存在,程序將給出“此文件夾不存在”的出錯信息。代碼如下:

procedure TForm1.Button1Click(Sender: TObject); //刪除文件夾
begin
if DirectoryExists (Edit1.Text) then
begin
if MessageDlg (’你想刪除文件夾 ’ +
Edit1.Text + ’ 嗎?’, mtConfirmation,
[mbYes, mbNo], 0) = mrYes then //確認提示
rmdir(Edit1.Text); //刪除文件夾
end
else
MessageDlg (’此文件夾不存在!’, mtError, [mbOk], 0); //出錯提示
end;

(6)當點擊“創建新文件夾”按鈕時,程序給出“你想創建新文件夾嗎?”的提示,如果確認之後,程序將在當前路徑下創建指定名字的文件夾,如果當前路徑下存在該文件夾,程序將給出“該文件夾已經存在”的出錯信息。相關代碼如下:

procedure TForm1.Button2Click(Sender: TObject);
begin
if DirectoryExists (Edit1.Text) then
showmessage(’該文件夾已經存在!’) //出錯提示
else
begin
if MessageDlg (’你想新建文件夾 ’ +
Edit1.Text + ’ 嗎?’, mtConfirmation,
[mbYes, mbNo], 0) = mrYes then //確認提示
ForceDirectorIEs (Edit1.Text); //創建新文件夾
end;
end;

Delphi設計文件管理器完整代碼:

vIEw source print? 01 unit Unit1; 02 interface 03 uses 04 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 05 StdCtrls, FileCtrl; 06 type 07 TForm1 = class(TForm) 08 DriveComboBox1: TDriveComboBox; 09 FileListBox1: TFileListBox; 10 FilterComboBox1: TFilterComboBox; 11 DirectoryListBox1: TDirectoryListBox; 12 Edit1: TEdit; 13 Button1: TButton; 14 Button2: TButton; 15 procedure DirectoryListBox1Change(Sender: TObject); 16 procedure DriveComboBox1Change(Sender: TObject); 17 procedure FileListBox1Change(Sender: TObject); 18 procedure FileListBox1Click(Sender: TObject); 19 procedure Button1Click(Sender: TObject); 20 procedure Button2Click(Sender: TObject); 21 private 22 { Private declarations } 23 public 24 { Public declarations } 25 end; 26 var 27 Form1: TForm1; 28 implementation 29 {$R *.DFM} 30 procedure TForm1.DirectoryListBox1Change(Sender: TObject); 31 begin 32 Form1.FileListBox1.Directory:=Form1.DirectoryListBox1.Directory; 33 //跟蹤Directo- ryListBox 的變化 34 end; 35 procedure TForm1.DriveComboBox1Change(Sender: TObject); 36 begin 37 Form1.DirectoryListBox1.Drive:=Form1.DriveComboBox1.Drive; 38 //跟蹤DriveCom boBox 的變化 39 end; 40 procedure TForm1.FileListBox1Change(Sender: TObject); 41 begin 42 Edit1.Text:=filelistbox1.Directory; //Edit 文本框中添加文件路徑 43 end; 44 procedure TForm1.FileListBox1Click(Sender: TObject); 45 begin 46 Edit1.Text:=filelistbox1.FileName; //Edit 文本框中添加文件名 47 end; 48 procedure TForm1.Button1Click(Sender: TObject); //刪除文件夾 49 begin 50 if DirectoryExists (Edit1.Text) then 51 begin 52 if MessageDlg (’你想刪除文件夾 ’ + 53 Edit1.Text + ’ 嗎?’, mtConfirmation, 54 [mbYes, mbNo], 0) = mrYes then //確認提示 55 rmdir(Edit1.Text); //刪除文件夾 56 end 57 else 58 MessageDlg (’此文件夾不存在!’, mtError, [mbOk], 0); //出錯提示 59 end; 60 procedure TForm1.Button2Click(Sender: TObject); 61 begin 62 if DirectoryExists (Edit1.Text) then 63 showmessage(’該文件夾已經存在!’) //出錯提示 64 else 65 begin 66 if MessageDlg (’你想新建文件夾 ’ + 67 Edit1.Text + ’ 嗎?’, mtConfirmation, 68 [mbYes, mbNo], 0) = mrYes then //確認提示 69 ForceDirectorIEs (Edit1.Text); //創建新文件夾 70 end; 71 end; 72 end.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved