Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to switch the 'current' directory of a TOpenDialog in an OnTypeChange handler? (is it possible at all?)

Tags:

delphi

Depending on the chosen filter, I'd like the OpenDialog to 'look' in different directries. Something like:

procedure TForm1.FileOpen1OpenDialogTypeChange(Sender: TObject);
// This does not work as intended...
var
  Dialog: TOpenDialog;
  FilterIndex: Integer;
  FilterExt: string;
  Path: string;
begin { TForm1.actFileOpenOpenDialogTypeChange }
  Dialog := Sender as TOpenDialog;
  FilterIndex := Dialog.FilterIndex;
  FilterExt := ExtFromFilter(Dialog.Filter, FilterIndex);
  GetIniPathForExtension(FilterExt, Path);
  if DirectoryExists(Path) and
     (Path <> IncludeTrailingPathDelimiter(Dialog.InitialDir)) then
  begin
    // those two statements don't have the desired effect
    // but illustrate what is meant to happen:
    Dialog.FileName := Path + '*' + FilterExt;
    Dialog.InitialDir := Path;
  end;
end;  { TForm1.actFileOpenOpenDialogTypeChange }

I can't find any way to let the dialog update itself to the new directory. I've tried calling OpenDialog.Execute, but that starts another OpenDialog without closing the current one...

like image 614
Reinier Avatar asked Dec 31 '25 22:12

Reinier


1 Answers

Some time ago I have looked after exactly that sort of thing, but couldn't find a solution either. Nowadays I'm glad not to implement it anyway for the following reason:

Imagine a user executes the open dialog. He knows where to find the required file and navigates to that folder. Now he can't see the file and realizes that the filter is set wrong. He changes the filter and naturally expects the folder to stay the same.

Try and make some observations: in most of the cases a user first selects the folder and after that the file type.

like image 50
Uwe Raabe Avatar answered Jan 05 '26 16:01

Uwe Raabe



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!