A propriedade “ofOverwritePrompt” para TSaveDialog não funciona quando os estilos VCL são usados no Delphi 10.1 Berlin

Crie um novo aplicativo VCL Forms

No formulário principal, adicione um Tbutton e um TSaveDialog

Defina "ofOverwritePrompt" como True nas propriedades do SaveDialog1

Usar:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveDialog1.Execute();
end;

Execute o aplicativo. Pressione o botão para executar a caixa de diálogo Salvar. Tente salvar em um arquivo que já existe. Uma caixa de mensagem aparece se você deseja substituir o arquivo. Pressione cancelar. Tudo bem até agora. Feche o aplicativo.

Vá para Projeto / Opções / Aplicativo / Aparência e selecione um estilo Personalizado (por exemplo, Amakrits). Defina Amakrits como o estilo padrão.

Execute o aplicativo como em # 5 acima. Apenas um pequeno pedaço da caixa de mensagem será mostrado. Você precisará pressionar Enter para poder continuar.

(Usar um TFileSaveDialog fornecerá o mesmo resultado)

Se eu compilar e executar o aplicativo usando o Delphi XE8, tudo ficará bem, pois a janela de diálogo Salvar parece usar o estilo padrão do Windows, mesmo que outro estilo seja escolhido.

Edit: Eu tenho o Windows 10 Pro. Fonte compilada como win32 com Delphi 10.1 Berlin. A caixa de mensagem de substituição está parcialmente oculta. Apenas uma pequena parte superior esquerda é mostrada, veja a figura.

E aqui está compilado com o XE8 win32:

Ps. Estou usando o fator de escala padrão de 100%.

Compilar com o win64 (Delphi 10.1 Berlin) parece estar bem:

Então, compilar no win32 não funciona para mim, mas sim de 64 bits. Alguma pista?

Edit: Tentando com "GetSaveFileName (OFN)" também não funcionará para mim no win32 (win 64 está ok):

questionAnswers(4)

yourAnswerToTheQuestion