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

时间:2011-05-06 05:46:14

标签: delphi

似乎在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(...)将其清理干净。

2 个答案:

答案 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时没有任何问题。如果您尝试更改的目录输入正确,请尝试进行双重检查。