程序设计时,我们经常会需要打开或选择计算机上的文件,这时候就可以使用TOpenDialog组件来显示一个文件选择对话框。
1、“打开”对话框的标题设置
对话框的标题可以让用户明白对话框的意图,标题的自定义需要设置“打开”对话框的Title属性,需要注意的是,只有ofExNoPlaceBar属性为False才能看到对话框标题。
2、设置打开对话框不显示位置栏
修改TOpenDialog的OptionEx属性中的子属性ofExNoPlaceBar为True,是打开的对话框没有位置栏(位置栏指的是左侧,桌面,此电脑等)。
3、设置打开对话框的文件类型过滤器
通过设置文件类型过滤器,我们可以根据文件类型缩小查询范围一边选择。有两种方式.
(1)通过对象监视器中的Filter属性进行设置
(2)通过代码进行设置
OpenDialog1.Filter:= '文本文件|*.txt|单元文件|*.pas';//使用|隔开 OpenDialog1.Execute;
4、设置打开对话框打开时的初始文件路径
设置InitialDir 属性可以赋予对话框的初始文件路径,如果没有设置该属性或者指定的目录不存在,则由全局变量ForceCurrentDirectory确定初始化目录,如果该变量为True,
对话框则在当前工作目录处被打开,否则对话框会在当前工作目录或者我的文档目录处被打开,这依赖于Windows版本。
OpenDialog1.InitialDir:='d:';//默认打开D 盘符 OpenDialog1.Execute;
5、设置打开对话框可以选择多个文件
TOpenDialog组件有个Option属性,通过修改这个增加这个属性中的选项,可以改变对话框的外观跟行为。
如果需要同时选择多个文件,需要设置Options属性中的子属性ofAllowMultSelect的值为True。
示例:
OpenDialog1.Options:= OpenDialog1.Options+ [ofAllowMultiSelect];//原有的options属性加上多文件属性 OpenDialog1.Execute;
options属性说明
属性 | 说明 |
ofReadOnly | 只读复选框被选中 |
ofOverwritePrompt | 当用户选择一个已存在的文件时,弹出一个警告信息框,询问是否重写该文件 |
ofhideReadOnly | 隐藏“打开“对话框中的只读复选框 |
ofNoChangeDir | 当用户单击ok 按钮后,重新设置当前路径为选择文件之前的路径 |
ofShowHelp | 在对话框中显示”帮助“按钮 |
ofNoValidate | 对于”打开“对话框中选择的文件名不进行检查,允许非法的文件名 |
ofAllowMultiSelect | 程序运行时用户可以同时选择多个文件 |
ofExtensionDirfferent | 程序运行时,当选择的文件扩展名与DefaultExt属性不同时,则自动设置该标记 |
ofPathMustExist | 当用户选择的文件目录不存在时,弹出一个错误消息框 |
ofFileMustExist | 当用户选择一个不存在的文件时,弹出一个错误信息框 |
ofCreatePrompt | 当用户选择一个不存在的文件时,弹出一个信息框,询问是否创建新的文件 |
ofShareAware | 当文件共享非法时,忽略共享错误,允许用户选择文件 |
ofNoReadonlyReturn | 当用户选择一个只读文件,产生一个错误消息 |
ofnoTestFileCreate | 当用户在一个不能修改的共享网络路径中保存文件时,不进行网络文件的保护,磁盘路径,磁盘空间等检查 |
ofNoNetworkbutton | 在对话框中打开一个映射网络驱动对话框时,移除”网络“按钮,该选项只有在Options属性包含ofOldStyleDialog选项时才可用 |
ofNoLongNames | 只遵循文件命名规则,该选项只有在包含ofOldStyleDialog选项时才起作用 |
ofOldStyleDialog | ”打开“对话框采用旧的风格 |
ofNoDereferenceLinks | 禁止放弃windows的快捷方式,当打开一个快捷方式时,赋予文件名(FileName)快捷方式的路径和名称,而不是快捷方式关联的文件路径和名称 |
ofEnableIncludNotify | 当用户在对话框中打开一个文件夹时,发送CDN_INCLUDEITEM通知消息,该通知被发送到文件夹内部的每一项,该选项之应用在win2000及以后的版本 |
ofEnableSizing | 该选项只应用在win98及之后的版本,允许资源管理器风格的对话框,通过鼠标或键盘调整大小,在默认情况下,”打开“对话框允许调整大小,而不考虑该选项,在用户提供了钩子函数或自定义模板时才需要该选项 |
ofDontAddToRecent | 阻止文件添加到最近打开的文件列表中 |
ofForceShowHidden | 保证隐藏文件在对话框中可见 |
(1)DefaultExt属性
此属性用于指定一个默认的扩展名。如果用户在对话框中选择的文件没有带扩展名,就用这个属性作为文件的扩展名,如果不需要默认扩展名,应当把这个属性设为空。
(2)FileName属性
FileName属性可以指定一个文件名。在打开对话框时,这个文件名出现在对话框的“文件名”框中。在对话框中,可以指定其他文件名,如果单击“OK”按钮,对话框将关闭,并且FileName属性变成用户新指定的文件名,包括文件的路径和扩展名。FileName属性也可以指定一个不存在的文件名,表示将打开一个新文件。
(3)FilterIndex属性
如果有多个过滤器,这个属性用于指定哪个过滤器是默认过滤器。默认过滤器将显示在“打开”对话框的“文件类型”组合框的编辑框中。注意,过滤器的序号从1开始。
6、TOpenDialog组件的重要事件
OnCanClose----------当用户试图关闭对话框时将触发这个事件
OnFolderChange------当用户在对话框中改变、扩展或折叠了一个目录(也叫文件夹),将触发该事件
OnSelectionChange---当用户打开对话框、选择某个目录或文件、选择另一个过滤器、建立一个新的目录时将触发这个事件
OnShow--------------当对话框调用Execute方法、并且对话框还未显示时触发此事件
OnTypeChange--------当用户在对话框中选择了另一个过滤器时,将发生这个事件
(1)OnCanClose事件
当用户试图关闭对话框时将触发这个事件。这样就有机会对用户输入的文件名进行检查。如果文件名不符合要求,就把CanClose参数设为False,表示不允许关闭对话框。
(2)OnFolderChange事件
当用户在对话框中改变、扩展或折叠了一个目录(文件夹),将触发该事件。在程序中可以利用此事件获取用户浏览过的目录。
(3)OnSelectionChange事件
当用户打开对话框、选择某个目录或文件、选择另一个过滤器或建立一个新的目录时将触发这个事件。
OnSelectionChange事件与OnFolderChange事件相比触发的概率比较高。
(4)OnTypeChange事件
当用户在对话框中选择了另一个过滤器时,将触发这个事件。在此事件中结合FilterIndex属性的使用,可以获取当前对话。