您现在的位置是:首页 >

钢琴基础教程二弹完相当几级 DELPHI基础教程:文件管理(二)[3]

火烧 2022-02-03 04:01:54 1086
DELPHI基础教程:文件管理(二)[3]   函数NotI Li t用于判断待添加的字符串是否已存在于一个TStri g 对象中 函数返回一个布尔型变量   NotI Li t的具体实现如下  Fu

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

  函数NotInList用于判断待添加的字符串是否已存在于一个TStrings对象中 函数返回一个布尔型变量

  NotInList的具体实现如下

  Function TFileCtrForm NotInList(FileName: String;Items: TStrings) Boolean;

  var

  i: Integer;

  begin

  for I := to Items Count do

  if Items[i] = FileName then

  begin

  NotInList := False;

  Exit;

  end;

  NotInList := True;

  end;

  按指定匹配字符串显示当前目录中的文件

  当在FileEdit中输入一个匹配字符串 并回车 文件列表框将显示匹配结果 这一功能在FileEdit的OnKeyPress事件中实现

  procedure TFileCtrForm FileEditKeyPress(Sender: TObject; var Key: Char)

  begin

  if Key = # then

  begin

  FileListBox ApplyFilePath(FileEdit Text)

  Key := # ;

  end;

  end;

  文件列表框提供的ApplyFilePath方法是解决这一问题的关键所在

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

  为了进行比较 我们用另一种方法来实现文件的查找功能 即利用标准过程FindFirst FindNext FileList 与ListBox 中的内容完全一致

  当用户单击 查找 按钮时 与FileEdit 中字符串相匹配的文件将显示在ListBox 中 下面是实现代码

  procedure TFileCtrForm Button Click(Sender: TObject)

  var

  i: Integer;

  SearchRec: TSearchRec;

  begin

  Searched := True;

  Label Caption := Search Result ;

  ListBox Items Clear;

  FindFirst(FileEdit text faAnyFile SearchRec)

  ListBox Items Add(SearchRec Name)

  Repeat

  i := FindNext(SearchRec)

  If i = then

  ListBox Items Add(SearchRec Name)

  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 := SearchRec Size

  else

  Result := ;

  end;

  这一程序将在下一节中应用

   获取给定文件的时间戳 事实上等价于FileAge函数

  function GetFileTime(const FileName: String) Longint;

  var

  SearchRec: TSearchRec;

  begin

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

  Result := SearchRec Time

  else

  Result := ;

  end;

   检测文件的属性 如果文件具有某种属性 则

  SearchRec Attr 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|Move Cope Rename 当前目录等操作的输入对话框 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=

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

  主窗口主菜单包括File WIndows Help三项 File菜单项在子窗口生成时被子窗口同名菜单项所取代 设置Windows Help的GroupIndex = 可以使子窗口生成时这两个菜单项仍存在

  子窗口界面包括主菜单 目录树(DirectoryOutline) 文件列表框 用于显示驱动器的标签集(TabSet)以及三个用于显示驱动器类型的TImage部件

  表 子窗口界面设计

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

  部件 属性 功能

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

  FMForm ActiveControl=DirectoryOutline 子窗口

  Position=poDefault

  Style=fsMDIChild

  MainMenu 主菜单

  DriveTabSet Align=alTop 显示驱动器

  style=tsOwnerDraw

  DirectoryOutline Align=alLeft 显示当前驱动器的目录树

  options=[ooDrawTreeRoot

  ooDrawFocusRect ooStretchBitmaps]

  FileList Align=alClient 显示当前目录中的文件

  FileType=[ftReadOnly

  ftHidden ftSystem ftArchive ftNormal]

  ShowGlyphs=True

  Neork(Image) Picture(Neork bmp) 标志网络驱动器

  Vsible=False

  Floppy(Image) Picture(Floppy bmp) 标志软驱

钢琴基础教程二弹完相当几级 DELPHI基础教程:文件管理(二)[3]

  Visible=False

  Fixed(Image) Picture(Fixed bmp) 标志硬驱

  Visible=False

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

lishixinzhi/Article/program/Delphi/201311/25238  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码