在Win7中更改Delphi OpenDialog + Drive的目录

4
在Win7上,当新目录位于与当前目录不同的驱动器上时,更改TOpenDialog.InitialDir似乎无效。
例如:我想将我的InitialDir'C:\program files\MyApp' 更改为'D:\test\MyAppData' 这是已知的问题吗,还是只有在我的计算机上出现?
我已经尝试了与以下帖子中提到的相同的方法,但没有任何成功: Changing the directory of Delphi OpenDialog 编辑: 我正在使用DelphiXE和Win7 32位
路径/目录是正确的:因此,当我将该路径从代码复制并粘贴到对话框本身的“文件名”字段中,并按ENTER键时,对话框会切换到该目录。 只是在我的代码中它不起作用。
更新: 我找到了问题。 如果路径包含一些路径命令,例如..\,则TOpenDialog.InitialDir无法解析该命令。 使用TPath.GetFullPath(...)来清理它。
2个回答

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.

敬礼


OP特别要求将初始目录设置为不同的驱动器,您的DFM显示您正在请求“C:\”。 - Cosmin Prund
嗨@Cosmin Prund....抱歉,我不明白...我已经测试了DFM-initialDirC:\,但当执行Button1Click时,我已经测试将edit1.text设置为D:\and_folder并相反。一切都很好运行。 - ferpega
我的意思是,你可以用OpenDialog1.InitialDir := 'D:\my_folder'替换OpenDialog1.InitialDir := edit1.text;,这样一切都能正常工作。我已经测试过了三个磁盘和不同的文件夹,因此使用了edit1而不是一个常量字符串。 :-) - ferpega
抱歉,我错过了按钮的分配。+1。 - Cosmin Prund

1

我在更改InitialDir时没有任何问题,无论是通过对象检查器还是运行时(使用Delphi 2010的Win7)。请尝试仔细检查您要更改的目录是否正确输入。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接