Вы можете поставить фокус на элементе управления, который вам нравится, но диалог должен быть готов, когда вы это сделаете. Событие OnShow для этого рано. Например, вы можете использовать событие «OnFolderChange» вместе с флагом, чтобы не менять фокус каждый раз, когда папка меняется:
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure OpenDialog1FolderChange(Sender: TObject);
private
FDlgSetFocus: Boolean;
uses
dlgs;
procedure TForm1.Button1Click(Sender: TObject);
begin
FDlgSetFocus := False;
OpenDialog1.Execute;
end;
procedure TForm1.OpenDialog1FolderChange(Sender: TObject);
begin
if not FDlgSetFocus then
windows.SetFocus(GetDlgItem(GetParent((Sender as TOpenDialog).Handle), lst2));
FDlgSetFocus := True;
end;