知识大全 文件管理(三)[4]

Posted 文件

篇首语:农村四月闲人少,勤学苦攻把名扬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 文件管理(三)[4]相关的知识,希望对你有一定的参考价值。

DELPHI基础教程:文件管理(三)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

  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 以库单元为中心的程序组织方式提供了一种较完善的代码重用机制

   小结

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

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

  返回目录 DELPHI基础教程

       编辑推荐

       Java程序设计培训视频教程

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

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

  Oracle索引技术

  ORACLE G数据库开发优化指南

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

  C嵌入式编程设计模式

  Android游戏开发实践指南

cha138/Article/program/Delphi/201311/25235

相关参考

知识大全 文件管理(三)[2]

DELPHI基础教程:文件管理(三)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一致的

知识大全 文件管理(三)[1]

DELPHI基础教程:文件管理(三)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  画出每

知识大全 文件管理(一)[4]

DELPHI基础教程:文件管理(一)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  增加一

知识大全 文件管理(二)[4]

DELPHI基础教程:文件管理(二)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  子窗口

知识大全 开发Delphi对象式数据管理功能(三)[4]

DELPHI基础教程:开发Delphi对象式数据管理功能(三)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

下列选项属于我国农村干部管理考核和激励机制“一定三有”的是

下列选项属于我国农村干部管理考核和激励机制“一定三有”的是_____。A、定权责立规范B、收入有保障C、干好有希望D、退后有所养答案:ABCD解析:中央一号文件指出:加强农村基层党组织带头人队伍和党员

备查文件

(1)发行人成立的注册登记文件;(2)主管部门和证券交易所批准发行上市的文件;(3)承销协议;(4)国有资产管理部门关于资产证明估的确认报告;...备查文件备查文件的内容至少包括以下各项:(1)发行人

知识大全 文件 - 文件的基本概念(三)

  文件的存储结构(亦称物理结构)  文件的存储结构  文件的存储结构是指文件在外存上的组织方式  文件在外存上的基本的组织方式有四种顺序组织索引组织散列组织和链组织;对应的的文件名称分别为顺序文件索

知识大全 操作系统的文件系统由哪五部分组成的

操作系统的文件系统由哪五部分组成的文件系统由三部分组成:1、文件系统的接口,对对象操纵和管理的软件集合;2、对象;3、属性。文件系统介绍:文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NA

实行预算管理的事业单位申请开立基本存款账户应出具哪些资料?

1、事业单位法人证书正本,或国家、市、区县编制委员会下发的正式的文件,国务院或政府部门文件;  2、组织机构代码码证书(正、副本均可);3、同级财政部门同意其开户的证明文件;4、税务登记证;5、法人身