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

Размеры формы


Алекс

Вопрос

Добрый вечер!

 

Есть код

if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(SS)) then 
begin
  Resolution_Size:= SS.GetScreenSize;
  Resolution_Scale:= ss.GetScreenScale;
end;

Получаю разрешение экрана. Привязываю к этим размерам элементы формы. Форма FullScreen. В итоге все элементы залазят за экран снизу.  пришел к выводу, что форма приложения смещена на сколько-то пикселов из-за системной панели (часи, сеть...).

 

Как правильно высчитать высоту элементов?

Изменено пользователем Brovin Yaroslav
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Во-первых посмотрите "Как задать форме размер больше размера экрана?", вдруг найдете там что-то интересное.

Во-вторых - не понятно какая именно у Вас форма: стандартная, при которой рамка окон "нативная", либо используемая из стиля. Имеет значение, так как если рамка окна используется из стиля, то нужно копнуть сам стиль.

 

Ну или, если Вам нужно только под Windows, то можно так:

получите размер экрана и вычтите из него размер таскбара... )) А затем задайте форме соответсвующие положение и размеры.

  {$IFDEF MSWINDOWS}
  function GetTaskBarBounds : TRect;
  function GetTaskBarSize : TPoint;
  function GetTaskBarAlignment : TAlignLayout;
  {$ENDIF}
{$IFDEF MSWINDOWS}

function GetTaskBarBounds : TRect;
begin
  WinAPI.Windows.GetWindowRect(WinAPI.Windows.FindWindow(W95_EXPLORERCLASSNAME, ''), Result);
end;

function GetTaskBarSize : TPoint;
var
  TaskBarBounds : TRect;
begin
  TaskBarBounds := GetTaskBarBounds;
  with TaskBarBounds do
    Result := Point(Right - abs(Left), Bottom - abs(Top));
end;

function GetTaskBarAlignment : TAlignLayout;
var
  TaskBarBounds : TRect;
begin
  Result := TAlignLayout.alNone;
  if WinAPI.Windows.FindWindow(W95_EXPLORERCLASSNAME, '') > 0 then
    begin
      TaskBarBounds := GetTaskBarBounds;
      with TaskBarBounds do
        // At Left or at top of screen ?
        if (Left <= 0) and (Top <= 0) then
          begin
            if Bottom >= 480 then Result := TAlignLayout.alLeft
                             else Result := TAlignLayout.alTop;
          end else
          begin
            if Left <= 0 then Result := TAlignLayout.alBottom
                         else Result := TAlignLayout.alRight;
          end;
    end;
end;

{$ENDIF}

Потому-что все "свисто...лки" с кодом типа

TPlatformServices.Current.SupportsPlatformService(IFMXScreenService...

мне понятны только в случае если Вы делаете приложение под все операционки...

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...