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

第六章-文件管理(三)(1)

編輯:Delphi

2.畫出每個自畫項目 

這在TabSet的OnDrawTab事件處理過程中完成。這一事件處理過程的參數中包含了待畫項目索引、畫板、待畫區域、是否被選中等。這裡我們只利用了前三個參數。事實上利用最後一個參數,我們可以對被選中的標簽進行一些特殊的視覺效果處理。這一工作就留給讀者自己去完成。 

procedure TFMForm.DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas;

R: TRect; Index: Integer; Selected: Boolean);

var

Bitmap: TBitmap;

begin

Bitmap := TBitmap(DriveTabSet.Tabs.Objects[Index]);

with TabCanvas do

begin

Draw(R.Left, R.Top + 4, Bitmap);

TextOut(R.Left + 2 + Bitmap.Width, R.Top + 2, DriveTabSet.Tabs[Index]);

end;

end; 

6.4.5 文件管理基本功能的實現 

在子窗口的File菜單中,定義了文件管理的基本功能,它們是:

● Open :打開或運行一個文件(從文件列表框雙擊該文件可實現同樣效果)

● Move :文件在不同目錄間的移動

● Copy :文件拷貝

● Delete :文件刪除

● Rename :文件更名

● Properties :顯示文件屬性 

6.4.5.1 文件打開 

文件打開功能可以運行一個可執行文件,或把文件在與之相關聯的應用程序中打開。文件總是與創建它的應用程序相關聯,這種關聯可以在Windows的文件管理器中修改。要注意的是:文件的關聯是以後綴名為標志的,因而對一個文件關聯方式的修改將影響所有相同後綴名的文件。

文件打開功能實現的關鍵是利用了Windows API函數ShellExecute 。由於Windows API函數的參數要求字符串類型是PChar,而Delphi中一般用的是有結束標志的String類型,因此為調用方便我們把這一函數進行了重新定義如下。 

function ExecuteFile(const FileName, Params, DefaultDir: String;

ShowCmd: Integer): THandle;

var

zFileName, zParams, zDir: array[0..79] of Char;

begin

Result := ShellExecute(Application.MainForm.Handle, nil,

StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),

StrPCopy(zDir, DefaultDir), ShowCmd);

end;

以上函數在fmxutils單元中定義。fmxutils是一個自定義代碼單元。

有關ShellExecute中各參數的具體含義讀者可查閱聯機Help文件。

StrPCopy把一個Pascal類型的字符串拷貝到一個無結束符的PChar類型字符串中。

在子窗口的Open1Click事件處理過程中: 

procedure TFMForm.Open1Click(Sender: TObject);

begin

with FileList do

ExecuteFile(FileName, '', Directory, SW_SHOW) ;

end;

如果FileList允許顯示目錄的話(即FileType屬性再增加一項ftDirectory),那麼對於一個目錄而言,打開的含義應該是顯示它下邊的子目錄和文件。程序修改如下。 

  procefure TFMForm.Open1Click(Sender: Tobject);

begin

With FileList do

begin

if HasAttr(FileName,faDirectory) then

DirectoryOutline.Directory := FileName

else

ExecuteFile(FileName,' ' ,Directory,SW_SHOW);

end;

end; 

其中HasAttr是一個fmxutils單元中的自定義函數,用於檢測指定文件是否具有某種屬性。 

function HasAttr(const FileName: String; Attr: Word): Boolean;

begin

Result := (FileGetAttr(FileName) and Attr) = Attr;

end; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved