begin
memo1.Lines.LoadFromFile(opendialog1.FileName)
statusbar1..Panels[0].Text:= opendialog1.FileName //要求显示打搜余基开文件的世谨信毁高息
end
函数NotInList用于判断待添加的字符串是否已存在于一个TStrings对象中 函数返回一个布尔型运枝变量
NotInList的具体实现如下
Function TFileCtrForm NotInList(FileName: StringItems: TStrings) Boolean
var
i: Integer
begin
for I := to Items Count do
if Items[i] = FileName then
begin
NotInList := False
Exit
end
NotInList := True
end
按指定匹配字符串显示当前目录中的文件
当在FileEdit中输入一个匹配字符串 并回车 文件列表框将显示匹配结果 这一功能在FileEdit的OnKeyPress事件中实现
procedure TFileCtrForm FileEditKeyPress(Sender: TObjectvar Key: Char)
begin
if Key = # then
begin
FileListBox ApplyFilePath(FileEdit Text)
Key := #
end
end
文件列表框提供的ApplyFilePath方法是解决这一问题的关键所在
如仔 按指定匹配字符串查找当前目录中的文件
为了进行比较 我们用另一种方法来实现文件的查找功能 即利用标准旁橡敏过程FindFirst FindNext FileList 与ListBox 中的内容完全一致
当用户单击 查找 按钮时 与FileEdit 中字符串相匹配的文件将显示在ListBox 中 下面是实现代码
procedure TFileCtrForm Button Click(Sender: TObject)
var
i: Integer
SearchRec: TSearchRec
begin
Searched := True
Label Caption := Search Result
ListBox Items Clear
FindFirst(FileEdit text faAnyFile SearchRec)
ListBox Items Add(SearchRec Name)
Repeat
i := FindNext(SearchRec)
If i = then
ListBox Items Add(SearchRec Name)
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 := SearchRec Size
else
Result :=
end
这一程序将在下一节中应用
获取给定文件的时间戳 事实上等价于FileAge函数
function GetFileTime(const FileName: String) Longint
var
SearchRec: TSearchRec
begin
if FindFirst(ExpandFileName(FileName) faAnyFile SearchRec) = then
Result := SearchRec Time
else
Result :=
end
检测文件的属性 如果文件具有某种属性 则
SearchRec Attr And GivenAttr >
属性常量对应的值与意义如下表
表 属性常量对应的值与意义
━━━━━━━━━━━━━━━━━━━━
常量 值 描述
─────────────────────
faReadOnly $ 只读文件
faHidden $ 隐藏文件
faSysFile $ 系统文件
faVolumeID $ 卷标文件
faDirectory $ 目录文件
faArchive $ 档案文件
faAnyFile $ F 任何文件
━━━━━━━━━━━━━━━━━━━━
文件管理综合举例 文件管理器的实现
在本章的最后 我们利用Delphi提供的文件控件和文件管理函数开发一个简单的文件管理器 虽然这一文件管理器还无法和Windows提供的文件管理器相比拟 但它也为一般的文件 *** 作提供了足够多的功能 而且如果读者感兴趣 还可以对它做进一步的扩充 在后边的拖放 *** 作一章中 我们就为它提供了拖放支持 使它看起来更象一个 文件管理器
设计基本思路
窗口设计
文件管理器的主窗口是一个多文档界面(MDI) 有关文件 目录的显示和文件管理功能的实现都放在子窗口中 在程序执行过程中将根据需要d出一些完成不同 *** 作的对话框 这些对话框都是在需要时动态生成的 表 给出了本程序所设计窗体的清单
表 FileManger窗体清单
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
窗体类 功能 用于创建该类窗体的菜单项
──────────────────────────────────────
TFileManager 主窗口
TFMForm 子窗口 Windows|New Window
TFileAttrForm 显示文件属性 File|PropertiesFunction|Search
TChangeForm 文件移动 拷贝 改名 改变 File|Move Cope Rename 当前目录等 *** 作的输入对话框 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=
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
主窗口主菜单包括File WIndows Help三项 File菜单项在子窗口生成时被子窗口同名菜单项所取代 设置Windows Help的GroupIndex = 可以使子窗口生成时这两个菜单项仍存在
子窗口界面包括主菜单 目录树(DirectoryOutline) 文件列表框 用于显示驱动器的标签集(TabSet)以及三个用于显示驱动器类型的TImage部件
表 子窗口界面设计
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件 属性 功能
───────────────────────────────────────
FMForm ActiveControl=DirectoryOutline 子窗口
Position=poDefault
Style=fsMDIChild
MainMenu 主菜单
DriveTabSet Align=alTop 显示驱动器
style=tsOwnerDraw
DirectoryOutline Align=alLeft 显示当前驱动器的目录树
options=[ooDrawTreeRoot
ooDrawFocusRect ooStretchBitmaps]
FileList Align=alClient 显示当前目录中的文件
FileType=[ftReadOnly
ftHidden ftSystem ftArchive ftNormal]
ShowGlyphs=True
Neork(Image) Picture(Neork bmp) 标志网络驱动器
Vsible=False
Floppy(Image) Picture(Floppy bmp) 标志软驱
Visible=False
Fixed(Image) Picture(Fixed bmp) 标志硬驱
Visible=False
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
lishixinzhi/Article/program/Delphi/201311/25238
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)