2015-02-20 10 views
0

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

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

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

Screen->Size(); // TSize 

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

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

Вы пробовали поиск в Интернете для чего-то вроде "C++ builder firemonkey screen size"? –

+0

Да, но ничего не найдено ... Я также получил доступ к странице docwiki, но ничего, что решает мою проблему. – mauroaraujo

ответ

3

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

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

В качестве альтернативы, вы можете использовать Platform Services рамку 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; 
}