TOpenDialog组件实现打开指定文件功能。
一.TOpenDialog组件的主要属性
DefaultExt----------此属性用于指定一个默认的扩展名
FileName-----------此属性用于指定一个文件名
Files------------------通过此属性可以访问多个文件
Filter-----------------此属性用于设置文件过滤器
FilterIndex----------此属性用于指定哪个过滤器是默认过滤器
InitialDir-------------设置此属性可以指定另外一个目录
Options--------------此属性用于设置“打开”对话框的选项
Title------------------此属性用于设置对话框的标题
二、filter属性设置(最重要)
此属性用于设置文件过滤器,让对话框只列出特定类型的文件。Filter属性可以设置多个过滤器,这些过滤器将显示在“打开”对话框的“文件类型”组合框内。方法如下:
1、filter以"|" 作为1组过滤。 "|"左侧为 opendialog1显示的过滤提示字符,"|"左侧为过滤条件,如:'文档文件|*.doc‘;
2、过滤条件2个以上,可以通过“;”字符追加,如:'文档文件|*.doc;*.docx;*.txt;*.xls’;
3、如果2组过滤以上,通过 "|"字符追加,如:'文档文件|*.doc;*.docx;*.txt;*.xls;*.xlsx|Word文件|*.doc;*.docx‘;
下面是4组的示例:
opendialog1.filter:='文档文件|*.doc;*.docx;*.txt;*.xls;*.xlsx|Word文件|*.doc;*.docx|Excel文件|*.xls;*.xlsx|所有文件|*.*';
三、其它属性
(1)DefaultExt属性
此属性用于指定一个默认的扩展名。如果用户在对话框中选择的文件没有带扩展名,就用这个属性作为文件的扩展名,如果不需要默认扩展名,应当把这个属性设为空。
(2)FileName属性
FileName 属性可以指定一个文件名。在打开对话框时,这个文件名出现在对话框的“文件名”框中。在对话框中,可以指定其他文件名,如果单击“OK”按钮,对话框将关 闭,并且FileName属性变成用户新指定的文件名,包括文件的路径和扩展名。FileName属性也可以指定一个不存在的文件名,表示将打开一个新文件。
(3)Files属性
如果Options属性包含ofAllowMultiSelect元素,表示允许一次选择多个文件,这些文件可以通过Files属性访问。Files属性是一个TStrings对象。
(4)FilterIndex属性
如果有多个过滤器,这个属性用于指定哪个过滤器是默认过滤器。默认过滤器将显示在“打开”对话框的“文件类型”组合框的编辑框中。注意,过滤器的序号从1开始。
(5)InitialDir属性
此属性用于设置打开对话框第1次打开时的默认打开目录。例如要将打开对话框的默认打开目录设置为C盘根目录,就可以将InitialDir属性设置为“C:”。
(6)Options属性
此属性用于设置“打开”对话框的选项。它设定了如下16个用户可选值。以下可以多选:
ofAllowMultiSelect:用户可以一次选择多个文件。
ofCreatePrompt:如果用户输入的文件名是不存在的,当用户单击“OK”按钮时,将显示一个提示框,询问要不要建立这个文件。
ofExtensionDifferent:如果用户所选文件的扩展名与DefaultExt属性设置的默认扩展名不同,就包含这个元素。
ofFileMustExist:用户输入的文件名必须是已存在的。
ofHideReadOnly:对话框中不显示“以只读方式打开”复选框。
ofNoChangeDir:即使用户在对话框中选择了其他目录,但对程序来说,当前目录总是对话框第一次打开时的目录。
ofNoDereferenceLinks:如果用户选择的是快捷方式文件(.lnk),FileName属性是快捷方式文件本身,而不是快捷文件指向的文件。
ofNoLongNames:不允许长文件名。
ofNoReadOnlyReturn:不允许用户选择只读的文件,否则将显示一个警告框。
ofNoTestFileCreate:保存文件时不进行写保护、磁盘满、驱动器门打开等检查。
ofNoValidate:不对文件名中的字符进行合法性检查。
ofOverwritePrompt:用于“另存为”对话框中,如果用户指定的文件名已存在,将显示一个警告框用来让用户选择是否要覆盖已有的文件。
ofPathMustExist:用户输入的路径必须是已经存在的,否则将显示警告。
ofReadOnly:选中“以只读方式打开”复选框。
ofShareAware:对话框不理会所有的共享错误。
ofShowHelp:对话框中将显示“帮助”按钮。
(7)Title属性
此属性用于设置对话框显示时的窗口标题。例如大多数据库程序都有还原数据库功能,其打开对话框的标题就可以设置为“打开还原文件”。
四、事件
OnCanClose----------当用户试图关闭对话框时将触发这个事件
OnFolderChange-----当用户在对话框中改变、扩展或折叠了一个目录(也叫文件夹),将触发该事件
OnSelectionChange-当用户打开对话框、选择某个目录或文件、选择另一个过滤器、建立一个新的目录时将触
发这个事件
OnShow----------------当对话框调用Execute方法、并且对话框还未显示时触发此事件
OnTypeChange-------当用户在对话框中选择了另一个过滤器时,将发生这个事件
(1)OnCanClose事件
当用户试图关闭对话框时将触发这个事件。这样就有机会对用户输入的文件名进行检查。如果文件名不符合要求,就把CanClose参数设为False,表示不允许关闭对话框。
(2)OnFolderChange事件
当用户在对话框中改变、扩展或折叠了一个目录(文件夹),将触发该事件。在程序中可以利用此事件获取用户浏览过的目录。
(3)OnSelectionChange事件
当用户打开对话框、选择某个目录或文件、选择另一个过滤器或建立一个新的目录时将触发这个事件。
OnSelectionChange事件与OnFolderChange事件相比触发的概率比较高。
(4)OnTypeChange事件
当用户在对话框中选择了另一个过滤器时,将触发这个事件。在此事件中结合FilterIndex属性的使用,可以获取当前对话。
五、实现代码
TOpenDialog组件最重要的方法就是Execute方法。
opendialog1.Filter:='XML文件|*.xml|dproj文件|*.dproj'; // 设置过滤
opendialog1.FileName:=ExtractFilePath(Application.ExeName)+'*.xml';// 指定专用文件名
if opendialog1.Execute then // 指定打开文件
Edit1.Text:=opendialog1.FileName;