熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:文件管理(二)[3]

2022-06-13   來源: Delphi編程 

  函數NotInList用於判斷待添加的字符串是否已存在於一個TStrings對象中函數返回一個布爾型變量

  NotInList的具體實現如下

  Function TFileCtrFormNotInList(FileName: String;Items: TStrings) Boolean;

  var

  i: Integer;

  begin

  for I := to ItemsCount do

  if Items[i] = FileName then

  begin

  NotInList := False;

  Exit;

  end;

  NotInList := True;

  end;

   按指定匹配字符串顯示當前目錄中的文件

  當在FileEdit中輸入一個匹配字符串並回車文件列表框將顯示匹配結果這一功能在FileEdit的OnKeyPress事件中實現

  procedure TFileCtrFormFileEditKeyPress(Sender: TObject; var Key: Char)

  begin

  if Key = # then

  begin

  FileListBoxApplyFilePath(FileEditText)

  Key := #;

  end;

  end;

  文件列表框提供的ApplyFilePath方法是解決這一問題的關鍵所在

   按指定匹配字符串查找當前目錄中的文件

  為了進行比較我們用另一種方法來實現文件的查找功能即利用標准過程FindFirstFindNextFileList與ListBox 中的內容完全一致

  當用戶單擊查找按鈕時與FileEdit 中字符串相匹配的文件將顯示在ListBox下面是實現代碼

  procedure TFileCtrFormButtonClick(Sender: TObject)

  var

  i: Integer;

  SearchRec: TSearchRec;

  begin

  Searched := True;

  LabelCaption := Search Result;

  ListBoxItemsClear;

  FindFirst(FileEdittextfaAnyFileSearchRec)

  ListBoxItemsAdd(SearchRecName)

  Repeat

  i := FindNext(SearchRec)

  If i = then

  ListBoxItemsAdd(SearchRecName)

  until i <> ;

  end;

  SearchRec是一個TSearchRec類型的記錄TSearchRec的定義如下

  TSearchRec = record

  Fill: array[] of Byte;

  Attr: Byte;

  Time: Longint;

  Size: Longint;

  Name: string[];

  end;

  在這一結構中提供了很多信息靈活應用將給編程帶來很大方便下面我們舉幾個例子

   檢測給定文件的大小

  function GetFileSize(const FileName: String) LongInt;

  var

  SearchRec: TSearchRec;

  begin

  if FindFirst(ExpandFileName(FileName) faAnyFile SearchRec) = then

  Result := SearchRecSize

  else

  Result := ;

  end;

  這一程序將在下一節中應用

   獲取給定文件的時間戳事實上等價於FileAge函數

  function GetFileTime(const FileName: String) Longint;

  var

  SearchRec: TSearchRec;

  begin

  if FindFirst(ExpandFileName(FileName)faAnyFile SearchRec) = then

  Result := SearchRecTime

  else

  Result := ;

  end;

   檢測文件的屬性如果文件具有某種屬性

  SearchRecAttr And GivenAttr >

  屬性常量對應的值與意義如下表

  表 屬性常量對應的值與意義

  ━━━━━━━━━━━━━━━━━━━━

  常量 值 描述

  ─────────────────────

  faReadOnly $ 只讀文件

  faHidden $ 隱藏文件

  faSysFile $ 系統文件

  faVolumeID $ 卷標文件

  faDirectory $ 目錄文件

  faArchive $ 檔案文件

  faAnyFile $F 任何文件

  ━━━━━━━━━━━━━━━━━━━━

   文件管理綜合舉例文件管理器的實現

  在本章的最後我們利用Delphi提供的文件控件和文件管理函數開發一個簡單的文件管理器雖然這一文件管理器還無法和Windows提供的文件管理器相比擬但它也為一般的文件操作提供了足夠多的功能而且如果讀者感興趣還可以對它做進一步的擴充在後邊的拖放操作一章中我們就為它提供了拖放支持使它看起來更象一個文件管理器

   設計基本思路

   窗口設計

  文件管理器的主窗口是一個多文檔界面(MDI)有關文件目錄的顯示和文件管理功能的實現都放在子窗口中在程序執行過程中將根據需要彈出一些完成不同操作的對話框這些對話框都是在需要時動態生成的給出了本程序所設計窗體的清單

   FileManger窗體清單

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  窗體類 功能 用於創建該類窗體的菜單項

  ──────────────────────────────────────

  TFileManager 主窗口

  TFMForm 子窗口 Windows|New Window

  TFileAttrForm 顯示文件屬性 File|Properties;Function|Search

  TChangeForm 文件移動拷貝改名改變 File|MoveCopeRename 當前目錄等操作的輸入對話框 Directory|change Directory

  TSearchForm 輸入待查找文件的名稱和路徑 Function|Search

  TDiskViewForm 顯示磁盤信息 Function|Disk View

  TViewDir 輸入待創建的子目錄 Directory|CreateDirectory

  TAboutBox 顯示版權信息 Help|About

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   界面設計

  主窗口界面主要是主菜單和用於表示當前目錄當前文件的狀態條

  表 主窗口界面設計

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  部件 屬性 功能

  ─────────────────────────────

  FileManager Style=fsMDI 主窗口

  WindowMenu=Windows

  Position=poDefault

  MainMenu 主菜單

  FilePanel Align=alBottom 顯示當前選中文件

  BevelInner=bvLowered

  BevelWidth=

  DirectoryPanel Align=alBottom 顯示當前選中目錄

  Alignment=taLeftJustify

  BevelInner=bvLowered

  BevelWidth=

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  主窗口主菜單包括FileWIndowsHelp三項File菜單項在子窗口生成時被子窗口同名菜單項所取代設置WindowsHelp的GroupIndex = 可以使子窗口生成時這兩個菜單項仍存在

  子窗口界面包括主菜單目錄樹(DirectoryOutline)文件列表框 用於顯示驅動器的標簽集(TabSet)以及三個用於顯示驅動器類型的TImage部件

  表 子窗口界面設計

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  部件 屬性 功能

  ───────────────────────────────────────

  FMForm ActiveControl=DirectoryOutline 子窗口

  Position=poDefault

  Style=fsMDIChild

  MainMenu 主菜單

  DriveTabSet Align=alTop 顯示驅動器

  style=tsOwnerDraw

  DirectoryOutline Align=alLeft 顯示當前驅動器的目錄樹

  options=[ooDrawTreeRoot

  ooDrawFocusRectooStretchBitmaps]

  FileList Align=alClient 顯示當前目錄中的文件

  FileType=[ftReadOnly

  ftHiddenftSystemftArchiveftNormal]

  ShowGlyphs=True

  Network(Image) Picture(Networkbmp) 標志網絡驅動器

  Vsible=False

  Floppy(Image) Picture(Floppybmp) 標志軟驅

  Visible=False

  Fixed(Image) Picture(Fixedbmp) 標志硬驅

  Visible=False

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25238.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.