您现在的位置是:首页 >

三阶魔方基础教程的简单方式 DELPHI基础教程:文件管理(三)[4]

火烧 2021-07-12 13:55:47 1046
DELPHI基础教程:文件管理(三)[4]   目录删除过程的实现代码如下   rocedure TFMForm DeleteDirectory Click(Se der: TO ject)   va

DELPHI基础教程:文件管理(三)[4]  

  目录删除过程的实现代码如下

  procedure TFMForm DeleteDirectory Click(Sender: TObject)

  var

  path: String;

  k: Integer;

  begin

  {$I }

  path := DirectoryOutline Directory;

  DirectoryOutline Directory := ExtractFilePath(Path)

  if MessageDlg( Delete + path + ? mtConfirmation [mbYes mbNo] ) = idYes then

  RmDir(path)

  if IOResult <> then

  MessageDlg( Cannot remove directory! The path might not +

   exist non empty or is the current logged directory mtWarning [mbOk] )

  else

  DirectoryOutline Reset;

  end;

  修改后的目录创建过程如下

  procedure TFMForm CreateDirectory Click(Sender: TObject)

  var

  NewDir: TNewDir;

  Dir: String;

  begin

  {$I }

  NewDir := TNewDir Create(self)

  with NewDir do

  begin

  CurrentDir Caption := DirectoryOutline Directory;

  if (ShowModal <> idCancel) and (DirName Text <> ) then

  Dir := ExpandFileName(DirName text)

  end;

  MkDir(Dir)

  if IOResult <> then

  MessageDlg( Cannot Create directory mtWarning [mbOk] )

  else

  DirectoryOutline Reset;

  end;

  当完成了这些工作 把程序重新编译 运行后 可以发现我们所希望实现的功能完全实现了!同时 我们有了一个更好的目录树部件

  改变当前目录

  改变当前目录的实现非常简单 只要修改DirectoryOutline的Directory属性 但需注意的是 当改变后目录所在驱动器也发生变化时应相应修改DriveTabSet的当前值 由于驱动器名与DriveTabSet的索引属性TabIndex之间并没有确定的对应关系 因而需要通过一个循环进行查找匹配

  Change Directory的菜单事件处理过程是FileChange 即与文件的移动 拷贝 更名共用一个事件处理过程 详细情况请读者参看( )中的介绍

  改变当前目录的实现如下

  procedure TFMForm ChangeDirectory(Todir: String)

  var

  i: Integer;

  begin

  {$I }

  ChDir(ToDir)

  if IOResult <> then

  MessageDlg( Cannot find directory mtWarning [mbOk] )

  else

  begin

  with DirectoryOutline do

  begin

  Directory := ToDir;

  Refresh;

  if DriveTabSet Tabs[DriveTabSet TabIndex][ ]<>drive then

  for I := to do

  if DriveTabSet Tabs[i][ ] = drive then

  begin

  DriveTabSet TabIndex := i;

  Exit;

  end;

  end;

  end;

  end;

  一些问题的处理

   子窗口的标题

  Windows的文件管理器是我们设计的楷模 在子窗口显示标题上也不例外 我们把当前目录加上文件的类型作为子窗口的标题

  过程CreateCaption用于生成子窗口的标题

  procedure TFMForm CreateCaption;

  var

  Cap: String;

  begin

  Cap := DirectoryOutline Directory;

  Cap := cap+ +FileList mask;

  Caption := Cap;

  end;

  当前目录或文件显示类型发生变化时改变子窗口的标题 如DirectoryOutline的Change事件处理过程和ViewType菜单项的Click事件处理过程就调用了该过程

  状态条的显示

  状态条用于显示当前目录和当前选中文件 它们的值在DirectoryOutline 和FileList的Change事件处理过程中修改

  DirectoryOutline和FileList最终的Change事件处理过程如下

  procedure TFMForm DirectoryOutlineChange(Sender: TObject)

  begin

  CreateCaption;

  FileList clear;

  FileList Directory := DirectoryOutline Directory;

  FileList Update;

  FileManager DirectoryPanel Caption := DirectoryOutline Directory;

  end;

  procedure TFMForm FileListChange(Sender: TObject)

  begin

  with FileList do

  begin

  if (ItemIndex >= ) and (Not HasAttr(FileName faDirectory)) then

  begin

  TheFileName := FileName;

  FileManager FilePanel Caption :=

  Format( %s %d bytes [TheFileName GetFileSize(TheFileName)])

  end

  else

  FileManager FilePanel Caption := ;

  end;

  end;

  版本信息

  当用户单击主窗口的Help|About菜单项时将弹出一个About对话框 用于显示版本信息(如图 )

  这一对话框是用Delphi提供的模板做的

  菜单项的变灰与使能

  File菜单中定义的文件管理功能只有当活动焦点在FileList(即有当前选中文件)时才起作用 否则所有菜单项应变灰 以免导致系统崩溃

  这一功能在File菜单的Click事件处理过程中实现 这一点并不很容易被人想到 希望读者能从中受到启发

  procedure TFMForm File Click(Sender: TObject)

  var

  FileSelected: Boolean;

  begin

  FileSelected := FileList ItemIndex >= ;

  Open Enabled := FileSelected;

  Delete Enabled := FileSelected;

  Copy Enabled := FileSelected;

  Move Enabled := FileSelected;

  Rename Enabled := FileSelected;

  Properties Enabled := FileSelected;

  end;

  判断是否有文件被选中是通过检测ItemIndex属性是否大于等于 来实现的

  FileSelected := FileList ItemIndex >= ;

  可重用的文件处理模块

  库单元fmxutils是一个代码库 提供了若干文件处理模块 这些模块除在本程序中使用外 读者可以在其它应用程序中直接调用 而且不必重新编译 只要在Uses子句中包含即可 从中我们可以体会到 Delphi 以库单元为中心的程序组织方式提供了一种较完善的代码重用机制

  小结

  文件管理器是一个较为综合的例程 使用到了绝大部分以文件名 文件句柄以及其它参数(除文件变量)为操作对象的文件管理过程/函数 同时也提供了一些程序设计开发的思想 我们的介绍是以程序功能模块来组织的 我建议读者在学习并试图自己建立这一程序时采用同样的方法 ( )中的内容或许是一开始就应了解的 但其它完全可以按顺序逐步地扩充 最后得到一个完整的程序 这一例程在后边的拖放操作和异常处理等章节中还要用到 读者可以以此为基础进一步完善它 使它真正成为一个完全实用的程序

三阶魔方基础教程的简单方式 DELPHI基础教程:文件管理(三)[4]

  文件管理是在开发一个高级的Windows程序中不可避免的要涉及到的问题 本章介绍的思路和方法将为读者成为一个熟练的程序员奠定基础

  返回目录DELPHI基础教程

      编辑推荐

      Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

  Visual C++音频/视频技术开发与实战

  Oracle索引技术

  ORACLE G数据库开发优化指南

  Java程序性能优化 让你的Java程序更快 更稳定

  C嵌入式编程设计模式

  Android游戏开发实践指南

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

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