Button2 一执行不会是我想要的目录,而是Button1执行后OpenDialog1的目录, Why?
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.InitialDir := P;
if OpenDialog1.Execute then
P := ExtractFilePath(OpenDialog1.FileName);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.InitialDir := 'C:';
OpenDialog1.Execute;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.InitialDir := P;
if OpenDialog1.Execute then
P := ExtractFilePath(OpenDialog1.FileName);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.InitialDir := 'C:';
OpenDialog1.Execute;
end;
var
Form1: TForm1;
P:string;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.FileName :='';
OpenDialog1.InitialDir := P;
if OpenDialog1.Execute then
P := ExtractFilePath(OpenDialog1.FileName);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.FileName :='';
OpenDialog1.InitialDir := 'C:';
OpenDialog1.Execute;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
p:='d:\'
end;end.
begin
Result := DoExecute(@GetOpenFileName);
end;GetOpenFileName返回上次打开文件夹的指针,你查查DoExecute函数,它里面根本没有考虑InitialDir 属性,所以
begin
OpenDialog1.InitialDir := 'C:\';
OpenDialog1.Execute;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.InitialDir :=P;
if OpenDialog1.Execute then
P := ExtractFilePath(OpenDialog1.FileName);
OpenDialog1.CleanupInstance;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.InitialDir := 'C:\';
OpenDialog1.Execute;
OpenDialog1.CleanupInstance;
end;