似乎在Win7上更改TOpenDialog.InitialDir
不起作用,当新目录位于与当前目录不同的驱动器上时。
例如:我想从InitialDir
'C:\program files\MyApp' to 'D:\test\MyAppData'
这是一个已知问题,还是只在我的电脑上?
我已经尝试过同样的事情,如下文所述,但没有任何成功: Changing the directory of Delphi OpenDialog
编辑: 我在Win7 32位上使用DelphiXE
路径/目录是正确的:因此,当我从代码中复制该路径并将其传递到该Dialog本身的“文件名”字段时,按ENTER键,然后Dialog切换到该目录。只是,在我的代码中它不起作用。
更新
我发现了这个问题。如果路径包含某些路径命令,例如..\
,则TOpenDialog.InitialDir
无法解决该问题。使用TPath.GetFullPath(...)
将其清理干净。
答案 0 :(得分:2)
我在Delphi XE上测试过,它运行良好......我做到了这一点:
添加新表格:
object Form4: TForm4
Left = 0
Top = 0
Caption = 'Form4'
ClientHeight = 204
ClientWidth = 447
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 24
Top = 40
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Edit1: TEdit
Left = 120
Top = 42
Width = 121
Height = 21
TabOrder = 1
Text = 'D:\'
end
object OpenDialog1: TOpenDialog
InitialDir = 'C:\'
Left = 120
Top = 72
end
end
其源代码:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm4 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
begin
OpenDialog1.InitialDir := edit1.text;
OpenDialog1.Execute;
end;
end.
此致
答案 1 :(得分:1)
通过对象检查器或运行时(使用Delphi 2010的Win7)更改InitialDir
时没有任何问题。如果您尝试更改的目录输入正确,请尝试进行双重检查。