Ich habe jetzt diese Variante erfolgreich kurz ausprobiert und ich denke ich baue diese sobald ich dazu komme ein:
Disclaimer: Die Lösung verwendet diesen Ansatz: https://stackoverflow.com/questions/...16715#36716715.
Mein Beispielcode basiert auf Delphi Sydney, in früheren oder späteren Versionen kann die Anzahl der privaten Felder vor allen für TCustomFileDialog und TOpenDialog abweichen und muss dementsprechend angepasst werden.
Gegeben sei eine Form mit TOpenDialog und Button:
Delphi-Quellcode:
...
procedure TOpenDialogHelper.SetDefaultFolder(const ADefaultFolder: string);
var
FileDialogWrapper: TFileDialogWrapperHack;
CustomFileDialog: TCustomFileDialog;
FileDialog: IFileDialog;
ShellItem: IShellItem;
HR: HRESULT;
begin
FileDialogWrapper := TFileDialogWrapperHack(TOpenDialogHack(Self).FInternalWrapper);
if Assigned(FileDialogWrapper) then
begin
CustomFileDialog := FileDialogWrapper.FFileDialog;
if Assigned(CustomFileDialog) then
begin
FileDialog := TCustomFileDialogHack(CustomFileDialog).FDialog;
if Assigned(FileDialog) then
begin
HR := SHCreateItemFromParsingName(PWideChar(ADefaultFolder), nil, IShellItem, ShellItem);
if Succeeded(HR) then
FileDialog.SetFolder(ShellItem);
end;
end;
end;
end;
...
Es wäre halt schön, wenn die Komponente sowas in Zukunft einfacher machen würde...
Danke nochmal
TurboMagic