C ++ Builder — Как получить размер экрана с помощью C ++ Builder (Firemonkey)

Я знаю, что это глупый вопрос, но при смене визуальных библиотек я обнаружил «волнение» в FMX …
Моя проблема заключается в следующем: мне нужно создать собственную границу, поэтому я установил правильность Border Style: «Нет», но приложение работает в полноэкранном режиме, также покрывая панель инструментов Windows, поэтому я хотел бы изменить размер формы приложения. в соответствии с экраном, например:

mainForm->Height = Screen->Height - 10;

Это возможно с помощью VCL, но есть ли способ сделать это с помощью библиотеки FMX?
Максимум, который я завоевал с FMX — это (я не знаю, как он возвращает значения и тип значений):

Screen->Size(); // TSize

Я также победил это сейчас, но у меня есть ошибка компилятора:

TSize* Tamanho = new TSize;
Tamanho = Screen->Size();
frmPrincipal->Width = Tamanho->Width;
frmPrincipal->Height = Tamanho->Height - 10;

Ошибка: «E2034 Невозможно преобразовать« TSize »в« TSize * »»

Наконец я попытался поместить его в frmPrincipal.h, но та же ошибка:

TSize *Tamanho;

PS .: Другие возможные решения для решения «главной проблемы» приемлемы …

Большое спасибо!

0

Решение

TScreen::Size() вернуть фактический экземпляр TSize структура, а не TSize* указатель. Вы должны изменить свой код соответственно:

TSize Tamanho = Screen->Size();
frmPrincipal->Width = Tamanho.Width;
frmPrincipal->Height = Tamanho.Height - 10;

Кроме того, вы можете использовать FMX Платформа Услуги рамки для доступа к IFMXScreenService интерфейс напрямую (это то, что TScreen::Size() использует внутри):

_di_IInterface Intf;
if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXScreenService), Intf))
{
_di_IFMXScreenService Svc = Intf;
TPoint size = Svc->GetScreenSize().Round();
frmPrincipal->Width = size.X;
frmPrincipal->Height = size.Y - 10;
}
4

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector