该计划的一些背景:
该程序使用选项卡式界面同时处理多个文件。
我正在尝试更改 OpenDialog 的目录,因此每次调用打开文件时都会显示我当前正在处理的文件的目录,但即使我设置InitialDir
对于文件的路径,它始终显示最后打开的文件目录,而不是我设置的目录。
我尝试了以下方法:
if Length(CurrentFileName) > 0 then
begin
OpenFileDialog.InitialDir :='';
SetCurrentDirectory(PChar(CurrentFileName));
OpenFileDialog.InitialDir := ExtractFileDir(CurrentFileName);
end;
if OpenFileDialog.Execute then
...
Where CurrentFileName
是当前选项卡打开的文件的文件名的完整路径。但没有运气。
有什么办法可以实现这一点吗?
例如:
tab1
has c:\mydir\file.txt
opened
tab2
has d:\someotherdir\somefile.txt
opened
如果我搬到tab1
并调用 open 函数 IOpenDialog
应该向我显示以下内容c:\mydir\
我正在使用 Delphi 7。感谢任何帮助。
这里有规则对于 Windows Vista 及更早版本:
- 如果 lpstrFile 包含路径,则该路径是初始目录。
- 否则,lpstrInitialDir 指定初始目录。
- 否则,如果应用程序过去使用过“打开”或“另存为”对话框,则选择最近使用的路径作为初始目录。但是,如果应用程序长时间未运行,则其保存的选择路径将被丢弃。
- 如果 lpstrInitialDir 为 NULL 并且当前目录包含指定过滤器类型的任何文件,则初始目录为当前目录。
- 否则,初始目录为当前用户的个人文件目录。
- 否则,初始目录是桌面文件夹。
所以,如果当前FileName
属性非空,那么InitialDir
属性被忽略,应用程序的当前目录也是如此。这与您所观察到的情况相符,因此请确保您正在清除FileName
对话框的使用之间的属性。
(从 Windows 7 开始,规则有所不同,它们可能会破坏您的计划。如果您从第一个选项卡打开文件,然后从第二个选项卡打开文件,则在选择第一个选项卡时再次尝试打开文件可能会失败不再显示第一个选项卡的目录。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)