其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

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


发布日期:2023年03月02日
 
DELPHI基础教程:文件管理(二)[3]

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

NotInList的具体实现如下

Function TFileCtrFormNotInList(FileName: String;Items: TStrings) Boolean;

var

i: Integer;

begin

for I := to ItemsCount do

if Items[i] = FileName then

begin

NotInList := False;

Exit;

end;

NotInList := True;

end;

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

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

procedure TFileCtrFormFileEditKeyPress(Sender: TObject; var Key: Char)

begin

if Key = # then

begin

FileListBoxApplyFilePath(FileEditText)

Key := #;

end;

end;

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

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

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

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

procedure TFileCtrFormButtonClick(Sender: TObject)

var

i: Integer;

SearchRec: TSearchRec;

begin

Searched := True;

LabelCaption := Search Result;

ListBoxItemsClear;

FindFirst(FileEdittextfaAnyFileSearchRec)

ListBoxItemsAdd(SearchRecName)

Repeat

i := FindNext(SearchRec)

If i = then

ListBoxItemsAdd(SearchRecName)

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 := SearchRecSize

else

Result := ;

end;

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

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

function GetFileTime(const FileName: String) Longint;

var

SearchRec: TSearchRec;

begin

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

Result := SearchRecTime

else

Result := ;

end;

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

SearchRecAttr 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|MoveCopeRename 当前目录等操作的输入对话框 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=

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

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

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

子窗口界面设计

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

部件 属性 功能

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

FMForm ActiveControl=DirectoryOutline 子窗口

Position=poDefault

Style=fsMDIChild

MainMenu 主菜单

DriveTabSet Align=alTop 显示驱动器

style=tsOwnerDraw

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

options=[ooDrawTreeRoot

ooDrawFocusRectooStretchBitmaps]

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

FileType=[ftReadOnly

ftHiddenftSystemftArchiveftNormal]

ShowGlyphs=True

Network(Image) Picture(Networkbmp) 标志网络驱动器

Vsible=False

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

Visible=False

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

Visible=False

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

[] [] [] []

               

上一篇:DELPHI基础教程:文件管理(二)[4]

下一篇:DELPHI基础教程:文件管理(二)[2]