第六章-文件管理(三)(7)2007-05-086.4.7.4 改变当前目录 改变当前目录的实现非常简单,只要修改DirectoryOutline的Directory属性。但需注意的是:当改变后目录所在驱动器也发生变化时应相应修改DriveTabSet的当前值。由于驱动器名与DriveTabSet的索引属性TabIndex之间并没有确定的对应关系,因而需要通过一个循环进行查找匹配。Change Directory的菜单事件处理过程是FileChange,即与文件的移动、拷贝、更名共用一个事件处理过程。详细情况请读者参看(6.4.5.3)中的介绍。改变当前目录的实现如下。 procedure TFMForm.ChangeDirectory(Todir: String);vari: Integer;begin{$I-}ChDir(ToDir);if IOResult <> 0 thenMessageDlg("Cannot find directory", mtWarning, [mbOk], 0)elsebeginwith DirectoryOutline dobeginDirectory := ToDir;Refresh;if DriveTabSet.Tabs[DriveTabSet.TabIndex][1]<>drive thenfor I := 1 to 25 doif DriveTabSet.Tabs[i][1] = drive thenbeginDriveTabSet.TabIndex := i;Exit;end;end;end;end;6.4.8 一些问题的处理 6.4.8.1 子窗口的标题 Windows的文件管理器是我们设计的楷模,在子窗口显示标题上也不例外。我们把当前目录加上文件的类型作为子窗口的标题。过程CreateCaption用于生成子窗口的标题。 procedure TFMForm.CreateCaption;varCap: String;beginCap := DirectoryOutline.Directory;Cap := cap+""+FileList.mask;Caption := Cap;end; 当前目录或文件显示类型发生变化时改变子窗口的标题。如DirectoryOutline的Change事件处理过程和ViewType菜单项的Click事件处理过程就调用了该过程。