Если вы используете Delphi 2009+, существует TFileOpenDialog
.Используйте это и установите
procedure TForm3.FileOpenDialog1FolderChange(Sender: TObject);
begin
FInitiated := true;
end;
procedure TForm3.FileOpenDialog1FolderChanging(Sender: TObject;
var CanChange: Boolean);
begin
CanChange := not FInitiated;
end;
procedure TForm3.btnOpenClick(Sender: TObject);
begin
FInitiated := false;
FileOpenDialog1.DefaultFolder := 'C:\MyFolder\';
FileOpenDialog1.Execute;
end;
где
var
FInitiated: boolean;
(Обратите внимание, что должен быть ровно один FInitiated
на TFileOpenDialog
. Таким образом, если FileOpenDialog
является частным членомиз TForm3
, пусть FInitiated
также будет приватным членом TForm3
.)
Чтобы улучшить взаимодействие с пользователем, вы, вероятно, будете использовать
procedure TForm3.FileOpenDialog1FolderChanging(Sender: TObject;
var CanChange: Boolean);
begin
CanChange := not FInitiated;
if not CanChange then beep;
end;
или
procedure TForm3.FileOpenDialog1FolderChanging(Sender: TObject;
var CanChange: Boolean);
begin
CanChange := not FInitiated;
if not CanChange then
MessageBox(Handle, PChar('Directory selection is not allowed.'), PChar(Caption), MB_ICONINFORMATION);
end;