Hallo,
gegeben ist D10.3.3 und eine Action mit einem TOpenDialog.
Wenn der Benutzer auf einen bestimmten Dateityp wechselt soll im
OpenDialogTypeChange Event der Ordner, den der OpenDialog anzeigt
geändert werden.
In einer alten C++ buolder Zeitschrift hatte ich einen Lösungsansatz
gefunden den ich wie folgt nach Delphi portiert hatte, der aber nicht
mehr zu funktionieren scheint.
Delphi-Quellcode:
procedure ChangeDialogFolder(Dialog:TOpenDialog; NewPath: string);
var
DlgHandle : HWND;
EdtHandle : HWND;
OkBtnHandle : HWND;
OldPathLength : Integer;
OldPath : string;
begin
DlgHandle := GetParent(Dialog.Handle);
EdtHandle := GetDlgItem(DlgHandle, edt1);
OldPathLength := GetWindowTextLength(EdtHandle);
SetLength(OldPath, OldPathLength);
GetWindowText(EdtHandle, PWideChar(OldPath), OldPathLength + 1);
OldPath := PWideChar(OldPath);
SetWindowText(EdtHandle, NewPath);
OkBtnHandle := GetDlgItem(DlgHandle, IDOK);
SendMessage(OkBtnHandle, BM_CLICK, 0, 0);
SetWindowText(EdtHandle, OldPath);
end;
Leider ist EdtHandle immer 0 und auch wenn ich das auf cmb1 ändere (also Combobox
weil anders als früher nur noch eine Combo Box auf dem Dialog da ist) ist's auch 0.
Gibt es irgend eine andere Möglichkeit den angezeigten Pfad zur Laufzeit zu ändern?
Nein, InitialDir tut das nur bevor der Dialog geöffnet wurde.
Grüße
TurboMagic