第六章-文件管理(三)(8)2007-05-086.4.8.2 状态条的显示 状态条用于显示当前目录和当前选中文件。它们的值在DirectoryOutline 和FileList的Change事件处理过程中修改。DirectoryOutline和FileList最终的Change事件处理过程如下: procedure TFMForm.DirectoryOutlineChange(Sender: TObject);beginCreateCaption;FileList.clear;FileList.Directory := DirectoryOutline.Directory;FileList.Update;FileManager.DirectoryPanel.Caption := DirectoryOutline.Directory;end;procedure TFMForm.FileListChange(Sender: TObject);beginwith FileList dobeginif (ItemIndex >= 0) and (Not HasAttr(FileName,faDirectory)) thenbeginTheFileName := FileName;FileManager.FilePanel.Caption :=Format("%s, %d bytes", [TheFileName, GetFileSize(TheFileName)]);endelseFileManager.FilePanel.Caption := "";end;end; 6.4.8.3 版本信息 当用户单击主窗口的Help|About菜单项时将弹出一个About对话框,用于显示版本信息(如图6.13)。这一对话框是用Delphi提供的模板做的。6.4.8.4 菜单项的变灰与使能 File菜单中定义的文件管理功能只有当活动焦点在FileList(即有当前选中文件)时才起作用。否则所有菜单项应变灰,以免导致系统崩溃。这一功能在File菜单的Click事件处理过程中实现。这一点并不很容易被人想到,希望读者能从中受到启发。 procedure TFMForm.File1Click(Sender: TObject);varFileSelected: Boolean;beginFileSelected := FileList.ItemIndex >= 0;Open1.Enabled := FileSelected;Delete1.Enabled := FileSelected;Copy1.Enabled := FileSelected;Move1.Enabled := FileSelected;Rename1.Enabled := FileSelected;Properties1.Enabled := FileSelected;end;判断是否有文件被选中是通过检测ItemIndex属性是否大于等于0来实现的。 FileSelected := FileList.ItemIndex >= 0; 6.4.8.5 可重用的文件处理模块 库单元fmxutils是一个代码库,提供了若干文件处理模块。这些模块除在本程序中使用外,读者可以在其它应用程序中直接调用,而且不必重新编译,只要在Uses子句中包含即可。从中我们可以体会到,Delphi 以库单元为中心的程序组织方式提供了一种较完善的代码重用机制。 6.4.9 小结 文件管理器是一个较为综合的例程,使用到了绝大部分以文件名、文件句柄以及其它参数(除文件变量)为操作对象的文件管理过程/函数,同时也提供了一些程序设计开发的思想。我们的介绍是以程序功能模块来组织的,我建议读者在学习并试图自己建立这一程序时采用同样的方法。(6.4.8)中的内容或许是一开始就应了解的,但其它完全可以按顺序逐步地扩充,最后得到一个完整的程序。这一例程在后边的拖放操作和异常处理等章节中还要用到。读者可以以此为基础进一步完善它,使它真正成为一个完全实用的程序。文件管理是在开发一个高级的Windows程序中不可避免的要涉及到的问题。本章介绍的思路和方法将为读者成为一个熟练的程序员奠定基础。