dos_getfilenav

显示AutoCAD风格的文件选择对话框.


语法

(dos_getfilenav title default ext flags)

参数

title

对话框标题.

 

default

默认文件名; 可以是空字符串("").

 

ext

默认文件扩展名. 如果扩展名是空字符串("")则默认为*(所有文件).

Colder:

 

flags

一个整数值(位码), 控制对话框的行为. 可用的位码如下.

 

1 (bit 0)

新建文件.

如果即没有设置位码0(打开)也没有设置位码2, 只接受默认的扩展名(或无).  如果没有输入扩展名, 将使用默认的扩展名.  如果用户输入的扩展名不在默认范围内, 会显示一个"无效文件名"的消息框并且用户必须再次尝试或取消.  如果设置了位码0(新建)但没有设置位码2, 当输入的文件名不包含扩展名时会自动加上默认的扩展名.  注意如果扩展名不在默认范围内, 默认的扩展名仍然会添加在文件名之后从而形成多级扩展名.  例如, 如果用户输入test.dwg而默认的扩展名是.txt, 那么文件名将返回test.dwg.txt.  如果输入符合默认的扩展名, 就不会出现多余的扩展名了.  例如, 如果默认扩展名是.txt并且用户输入的是test.txt, 那么将返回test.txt.  如果没有设置位码0(打开)而设置了位码2, 任何扩展名(包括空的)都是可以接受的. 如果用户没有输入扩展名, 也不会使用默认的; 文件会没有扩展名. 如果即设置了位码0(新建)也设置了位码2, 那么任何输入的文件名都是可接受的(带不带扩展名都行)

 

2 (bit 1)

未使用

位码1未使用并保留.

 

4 (bit 2)

允许用户输入任意的文件扩展名

控制使用文件扩展名.  如果设置了位码2, 任何扩展名(包括空的)都可以使用. 如果没有设置位码2, 并且用户也没有输入扩展名, 这个函数仅接受指定的扩展名并且会把扩展名连接到文件名之后. (请看上面关于位码0和位码2的不同组合产生的不同效果.)

 

8 (bit 3)

首先在库中搜索输入的文件名

如果指字一位码8但没有指定位码0, 这个函数会首先在库中搜索输入的文件名.  如果在库搜索路径中找到文件, 将会去掉目录仅返回文件名. (如果在不同的目录中发现了同名文件时路径名不会去掉.)  如果没有设置位码3, 这个函数会返回完整的文件名, 包含路径名.  如果你想要使用这个对话框打开一个最后调用搜索(FindFile)找到的已经存在的文件名并保存图形(或其它数据)时, 设置位码3.

 

16 (bit 4)

把第二个参数解释成路径或目录, 而不是文件名.

 

如果设置了这个位码(或默认参数末尾采用了分界符, 例如"/acad/support/"), 则路径仅解释成路径名, 这个函数假定没有默认的文件名.  它会在目录列表中显示路径, 保持文件名输入框留空, 并禁用默认按钮.

32 (bit 5)

禁止显示警告对话框, 其中包括当新文件已经存在, 相同文件名已经打开.

 

如果设置了这个位码并且同时设置了位码0(意思是文件存在), 即使文件已经存在, 通知用户文件已存在的警告对话框也不会显示.

64 (bit 6)

当用户输入URL时禁止跳转到远程文件

 

如果设置了这个位码同时用户输入一个URL, 系统不会跳转, 取而代之的是返回URL.

128 (bit 7)

禁止URL

 

如果设置了这个位码同时用户输入了URL, 将会返回一个错误. 注意这个位码会取代"禁止跳转"位码(6).

256 (bit 8)

强制指定的初始化目录

 

如果指定了这个位码, 初始化目录被强制指定为第二个参数. 如果不设置, 初始化目录会从Windows注册表查找上一次使用时所浏览的目录.  如果这是第一次使用, 则指定初始化目录为当前目录.

512 (bit 9)

禁止FTP站点

 

如果设置了这个位码, FTP站点不会出现也不准浏览.

1024 (bit 10)

禁止Buzzsaw

 

如果设置了这个位码, Buzzsaw不可见或不能浏览..

2048 (bit 11)

只能浏览和选择文件夹.

 

如果设置了这个位码, 对话框将只显示文件夹, 只允许选择文件夹.

4096 (bit 12)

允许多项选择

如果设置了这个位码, 对话框允许选择多个文件(不支持位码11).

返回

如果位码11(2048)和12(4096)未指定, 返回被选文件名的完整路径. 类似于dos_getfiled.

 

如果指定位码11(2048), 返回所选文件夹的完整路径. 类似于dos_getdir.

 

如果指定位码12(4096), 返回所选文件名的列表. 类似于dos_getfilem. 注意, 第一个元素是被选文件的完整路径.

 

nil 取消或出错时.

示例s

Command: (dos_getfilenav "Select Lisp Files" "C:\\Program Files\\AutoCAD 2007\\Support\\" "lsp" 8)

"C:\\Program Files\\AutoCAD 2006\\Support\\3d.lsp"

 

Command: (dos_getfilenav "Select Lisp Files" "C:\\Program Files\\AutoCAD 2007\\Support\\" "lsp" 4104)

("C:\\Program Files\\AutoCAD 2007\\Support\\" "3darray.lsp" "3d.lsp")