Ansonsten mach dir das Leben einfach und mach das was Uwe sagt.
Dann würde sich das so vereinfachen und aussehen mit einem TFileOpenDialog:
Delphi-Quellcode:
procedure TForm3.FileOpenDialog1TypeChange(Sender: TObject);
var
ShellItem: IShellItem;
HR: HRESULT;
NewDefaultFolder: string;
begin
if Sender is TFileOpenDialog then
begin
case TFileOpenDialog(Sender).FileTypeIndex of
1:
begin
NewDefaultFolder := 'C:\Program Files';
end;
2:
begin
NewDefaultFolder := 'C:\Program Files (x86)';
end;
end;
HR := SHCreateItemFromParsingName(PWideChar(NewDefaultFolder), nil, IShellItem, ShellItem);
if Succeeded(HR) then
TFileOpenDialog(Sender).Dialog.SetFolder(ShellItem);
end;
end;