DriveComboList .DirList := DirectoryListBox;
DirectoryListBox.DirLabel := DirLabel;
DirectoryListBox.FileList := FileListBox;
FileFilterComboList.FileList := FileListBox;
FileListBox.FileEdit := FileEdit;
以上联系可以在设计时完成。只要打开相应属性的选择列表框进行选择即可。也可以在运行时利用如上的赋值语句建立联系。
文件控件的关键属性基本上都在以上联系中反映出来了。除此之外,FileFilterComboList有一个Filter属性,用来设置组合列表框的选择项;FileListBox 有一个Mask属性,用于设置显示文件的类型,这就允许FileListBox在脱离FileFilterComboList单独应用时仍能根据需要显示特定的文件。在6.4节中我们将应用这一功能。
文件控件的方法、事件基本是从ListBox和ComboBox中继承的。但FileListBox 中有一个ApplyFilePath方法很有用,我们将在后边给出其用法。
6.3.2 文件名浏览查找系统的设计思路
作为文件控件的应用实例,我们开发了一个简单的文件名浏览查找系统。这个系统可用于文件名的显示,把选中的文件写入列表框,并能按文件编辑框中输入的通配符对文件进行查找。
表
6.5 部件的设计━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件 属性 功能
─────────────────────────────────────
FileCtrForm Position=poDefault 主窗口
DirLabel 显示当前目录
FileEdit TabOrder=0 显示当前文件/输入文件显示匹配符
FileListBox1 FileEdit=FileEdit 显示当前目录文件
DirectoryListBox1 DirLabel=DirLabel 显示当前驱动器目录
FileList= FileListBox1
DriveComboBox1 DirList= DirectoryListBox1 选择当前驱动器
FilterComboBox1 FileList=FileListBox1 选择文件显示类型
Filter='All Files(*.*)|*.*|
Source Files(*.pas)|*.pas|
Form Files(*.dfm)|*.dfm|
Project Files(*.dpr)|*.dpr'
ListBox1 显示选中或查找的文件
Button1 Caption='查找' 按 FileEdit 中的内容进行查找
Button2 Caption='退出' 退出系统
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6.3.3 文件名浏览查找系统的功能和实现
6.3.3.1 按指定后缀名显示当前目录中的文件
实现这一功能只需要在控件间建立正确的联系即可,不需要代码支持。建立联系的方法如(6.3.1)中的介绍。
6.3.3.2 把选中的文件添加到列表框中
在FileListBox1的OnClick事件中:
procedure TFileCtrForm.FileListBox1Click(Sender: TObject);
begin
if Searched then
begin
Searched := False;
ListBox1.Items.Clear;
Label5.Caption := 'Selected Files';
end;
if NotInList(ExtractFileName(FileListBox1.FileName),ListBox1.Items) then
ListBox1.Items.Add(ExtractFileName(FileListBox1.FileName));
end;
Searched是一个全局变量,用于标明ListBox1当前显示内容是查找的结果还是从FileListBox1中选定的文件。
函数NotInList用于判断待添加的字符串是否已存在于一个TStrings对象中。函数返回一个布尔型变量。
NotInList的具体实现如下。
Function TFileCtrForm.NotInList(FileName: String;Items: TStrings): Boolean;
var
i: Integer;
begin
for I := 0 to Items.Count-1 do
if Items[i] = FileName then
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




