gpt4 book ai didi

delphi - 更改Delphi OpenDialog的目录

转载 作者:行者123 更新时间:2023-12-03 15:03:56 27 4
gpt4 key购买 nike

该计划的一些背景:
该程序使用选项卡式界面同时处理多个文件。
我正在尝试更改 OpenDialog 的目录,因此每次调用打开文件时都会显示我当前正在处理的文件的目录,但即使我设置 InitialDir对于文件的路径,它始终显示最后打开的文件目录,而不是我设置的目录。
我尝试了以下方法:

if Length(CurrentFileName) > 0 then
begin
OpenFileDialog.InitialDir :='';
SetCurrentDirectory(PChar(CurrentFileName));
OpenFileDialog.InitialDir := ExtractFileDir(CurrentFileName);
end;
if OpenFileDialog.Execute then
...

哪里CurrentFileName是当前选项卡打开的文件的文件名的完整路径。但运气不好。

有什么办法可以实现这一点吗?

例如:

tab1c:\mydir\file.txt打开
tab2d:\someotherdir\somefile.txt打开

如果我搬到tab1并调用 open 函数 I OpenDialog应该显示 c:\mydir\ 的内容

我正在使用 Delphi 7。感谢任何帮助。

最佳答案

这里是the rules对于 Windows Vista 及更早版本:

  1. 如果 lpstrFile 包含路径,则该路径是初始目录。
  2. 否则,lpstrInitialDir 指定初始目录。
  3. 否则,如果应用程序过去使用过“打开”或“另存为”对话框,则会选择最近使用的路径作为初始目录。但是,如果应用程序长时间未运行,则其保存的所选路径将被丢弃。
  4. 如果 lpstrInitialDir 为 NULL 并且当前目录包含指定过滤器类型的任何文件,则初始目录为当前目录。
  5. 否则,初始目录为当前用户的个人文件目录。
  6. 否则,初始目录是桌面文件夹。

因此,如果当前 FileName 属性非空,则 InitialDir 属性将被忽略,应用程序的当前目录也是如此。这与您观察到的情况相符,因此请确保在使用对话框之间清除 FileName 属性。

(从 Windows 7 开始,规则有所不同,它们可能会破坏您的计划。如果您从第一个选项卡打开文件,然后从第二个选项卡打开文件,则在第一个选项卡打开时再次尝试打开文件selected 可能不再显示第一个选项卡的目录。)

关于delphi - 更改Delphi OpenDialog的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4015705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com