A propriedade “ofOverwritePrompt” para TSaveDialog não funciona quando os estilos VCL são usados no Delphi 10.1 Berlin
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):