如何使用 C++ 生成器 (Firemonkey) 获取屏幕大小
How to get the screen size with C++ builder (Firemonkey)
我知道这是一个愚蠢的问题,但是在更改可视化库时我发现 "throuble" 带有 FMX...
我的问题是:我需要做自己的边框,所以我将属性设置为 Border Style:"None",但是应用程序以全屏模式运行,还覆盖了 windows 工具栏,所以我想要一个根据屏幕调整申请表大小的方法例如:
mainForm->Height = Screen->Height - 10;
可以使用 VCL,但是有什么方法可以使用 FMX 库来实现吗?
我用FMX征服的最大值是(我不知道它是如何returns值,以及值的种类):
Screen->Size(); // TSize
我现在也攻克了,但是编译报错:
TSize* Tamanho = new TSize;
Tamanho = Screen->Size();
frmPrincipal->Width = Tamanho->Width;
frmPrincipal->Height = Tamanho->Height - 10;
错误:"E2034 Cannot covert 'TSize' to 'TSize*'"
最后我试着把它放在 frmPrincipal.h 上,但同样的错误:
TSize *Tamanho;
PS.: 解决"main problem"的其他可能的解决方案是可以接受的...
非常感谢!
TScreen::Size()
return TSize
结构的实际实例,而不是 TSize*
指针。您需要相应地更改您的代码:
TSize Tamanho = Screen->Size();
frmPrincipal->Width = Tamanho.Width;
frmPrincipal->Height = Tamanho.Height - 10;
或者,您可以直接使用 FMX 的 Platform Services framework to access the 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;
}
我知道这是一个愚蠢的问题,但是在更改可视化库时我发现 "throuble" 带有 FMX... 我的问题是:我需要做自己的边框,所以我将属性设置为 Border Style:"None",但是应用程序以全屏模式运行,还覆盖了 windows 工具栏,所以我想要一个根据屏幕调整申请表大小的方法例如:
mainForm->Height = Screen->Height - 10;
可以使用 VCL,但是有什么方法可以使用 FMX 库来实现吗? 我用FMX征服的最大值是(我不知道它是如何returns值,以及值的种类):
Screen->Size(); // TSize
我现在也攻克了,但是编译报错:
TSize* Tamanho = new TSize;
Tamanho = Screen->Size();
frmPrincipal->Width = Tamanho->Width;
frmPrincipal->Height = Tamanho->Height - 10;
错误:"E2034 Cannot covert 'TSize' to 'TSize*'"
最后我试着把它放在 frmPrincipal.h 上,但同样的错误:
TSize *Tamanho;
PS.: 解决"main problem"的其他可能的解决方案是可以接受的...
非常感谢!
TScreen::Size()
return TSize
结构的实际实例,而不是 TSize*
指针。您需要相应地更改您的代码:
TSize Tamanho = Screen->Size();
frmPrincipal->Width = Tamanho.Width;
frmPrincipal->Height = Tamanho.Height - 10;
或者,您可以直接使用 FMX 的 Platform Services framework to access the 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;
}