Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 10.03.2018 во всех областях

  1. Вадим Смоленский

    Aero-тема в Windows 7

    Отвечаю на свой вопрос сам - вдруг кому пригодится. Наличие или отсутствие aero-темы при запуске можно определить следующим образом: function IsThisAero: Boolean; type TDwmIsCompositionEnabledFunc = function(out pfEnabled: BOOL): HRESULT; stdcall; var IsEnabled: BOOL; ModuleHandle: HMODULE; DwmIsCompositionEnabledFunc: TDwmIsCompositionEnabledFunc; begin Result := False; if Win32MajorVersion>=6 then // Vista or Windows 7+ begin ModuleHandle := LoadLibrary('dwmapi.dll'); if ModuleHandle <> 0 then try @DwmIsCompositionEnabledFunc := GetProcAddress(ModuleHandle, 'DwmIsCompositionEnabled'); if Assigned(DwmIsCompositionEnabledFunc) then if DwmIsCompositionEnabledFunc(IsEnabled) = S_OK then Result := IsEnabled; finally FreeLibrary(ModuleHandle); end; end; end; Критичным в моем случае оказалось то, что при запуске без aero-темы, но с экранным масштабированием многое масштабируется по-другому. Точнее сказать, одно масштабируется, а другое нет. Соответственно, чтобы компоненты приложения выравнивались, как задумано, приходится в разных ситуациях применять два разных коэффициента: один всегда равен экранному масштабу, а другой - только при запусках с aero; при запусках же без aero обращается в единицу. Всё это выходит довольно запутанно, часто при выборе коэффициента мне приходилось действовать методом тыка. Но в итоге добиился того, что приложение выглядит более-менее одинаково в обоих вариантах запуска.
    1 балл
  2. может, так http://www.cyberforum.ru/delphi-beginners/thread2193827.html
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...