Как сделать настройку TSaveDialog dpi осведомленной / масштабируемой?

Используя Delphi 2010, я настроил TSaveDialog, используя подход шаблона ресурса, как показано в TOpenPictureDialog в ExtDlgs Delpi. Шаблонный подход позволяет мне успешно вставить форму, содержащую несколько элементов управления, в диалоговом окне сохранения системы. Это работает нормально, если для параметра Windows DPI установлено значение 96. При заданном пользователем (текстовом) масштабировании или мониторах hdpi вставленная форма видна только частично. Это, конечно, происходит из-за Form.Scaled = True, который вызывает масштабирование формы плюс содержащие элементы управления (становится больше). В настоящее время файл шаблона (по умолчанию используется, например, в TOpenPictureDialog) содержит диалоговое окно с фиксированным размером и статические текстовые элементы, которые определяют пространство, которое будет занято вставленной формой.

Я могу придумать несколько обходных путей:

  • Нет масштабирования формы (не совсем решение для мониторов hdpi)
  • Предоставьте различные шаблоны на основе Screen.PixelsPerInch/96: 100% 125%, 150% 200% и т. Д.).
  • Использование интерфейса IFileDialogCustomize, но это не совсем выразительно для того, что я хочу.

Лучшим решением, вероятно, был бы способ изменить размер этого шаблона (на основе Screen.PixelsPerInch/ 96) в памяти, прежде чем он будет загружен диалогом. Есть что-то подобное?

0 ответов

Другие вопросы по тегам