Свойство «ofOverwritePrompt» для TSaveDialog не работает, если в Delphi 10.1 Berlin используются стили VCL

Создайте новое приложение VCL Forms

В основной форме добавьте Tbutton и TSaveDialog

Установите "ofOverwritePrompt" в True в свойствах для SaveDialog1

Использование:

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

Запустите приложение. Нажмите кнопку для запуска диалога сохранения. Попробуйте сохранить в файл, который уже существует. Появится окно сообщения, если вы хотите заменить файл. Нажмите Отмена. Пока все хорошо. Закройте приложение.

Перейдите в Project / Options / Application / Appearance и выберите пользовательский стиль (например, Amakrits). Установите Amakrits в качестве стиля по умолчанию.

Запустите приложение, как в # 5 выше. Будет отображаться только небольшая часть окна сообщения. Вам нужно будет нажать Enter, чтобы продолжить.

(Использование TFileSaveDialog даст тот же результат)

Если я скомпилирую и запущу приложение с использованием Delphi XE8, все будет в порядке, поскольку в диалоговом окне сохранения, похоже, используется стиль окон по умолчанию, даже если выбран другой стиль.

Изменить: у меня Windows 10 Pro. Исходный код скомпилирован как win32 с Delphi 10.1 Berlin. Окно сообщения замены частично скрыто. Показана только небольшая верхняя левая часть, см. Рисунок.

И вот он скомпилирован с Win32 XE8:

Ps. Я использую коэффициент масштабирования по умолчанию 100%.

Компиляция с win64 (Delphi 10.1 Berlin), кажется, будет в порядке:

Таким образом, компиляция в win32 не работает для меня, но 64-битная будет. Есть какие-нибудь подсказки?

Изменить: Попытка с «GetSaveFileName (OFN)» также не будет работать для меня в win32 (win 64 в порядке):

Ответы на вопрос(4)

Ваш ответ на вопрос