Свойство «ofOverwritePrompt» для TSaveDialog не работает, если в Delphi 10.1 Berlin используются стили VCL
В основной форме добавьте 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 в порядке):