Я знаю, что это глупый вопрос, но при смене визуальных библиотек я обнаружил «волнение» в 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 .: Другие возможные решения для решения «главной проблемы» приемлемы …
Большое спасибо!
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;
}