2011-05-06 32 views
4

似乎在Win7上更改TOpenDialog.InitialDir不起作用,當新目錄位於與當前目錄不同的驅動器上時。在Win7中更改Delphi OpenDialog +驅動器的目錄

例如爲:我要改變我的InitialDir'C:\program files\MyApp' to 'D:\test\MyAppData'

那是一個已知的問題,或者只是我的電腦上?

我已經嘗試過同樣的事情,在下面的文章中提到,但沒有成功: Changing the directory of Delphi OpenDialog

編輯: 我對Win7的32位使用DelphiXE

的路徑/ dir是正確的:因此,當我從代碼中複製該路徑並將其放到該對話框本身的「文件名」字段中並按ENTER時,則對話框切換到該目錄。只有在我的代碼中它不起作用。

更新:
我發現了這個問題。如果路徑包含一些路徑命令,如..\,則TOpenDialog.InitialDir無法解決該問題。使用TPath.GetFullPath(...)使其清潔。

回答

1

通過對象檢查器或運行時(Win7 with Delphi 2010),我沒有任何更改InitialDir的問題。如果您嘗試更改的目錄輸入正確,請嘗試重新檢查。

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. 

Regards

+0

該OP特別要求將初始目錄設置爲不同的驅動器,您的DFM顯示您正在請求'C:\' – 2011-05-06 07:00:42

+0

Hi @Cosmin Prund ....對不起,我不明白..我用'DFM-initialDir'測試了'C:\',但是當'Button1Click'執行時我已經測試過設置'edit1.text '到'D:\ and_folder'和相反。所有運行良好。 – ferpega 2011-05-06 07:05:33

+0

我的意思是,你可以用'OpenDialog1.InitialDir:='D:\ my_folder''來代替'OpenDialog1.InitialDir:= edit1.text;'並且所有工作都正常。我用3個磁盤和不同的文件夾測試了它,因爲有一個'edit1'而不是一個常量字符串。 :-) – ferpega 2011-05-06 07:08:15