Confira nessa postagem como capturar o tamanho da tela do dispositivo utilizando o RAD Studio 10.2 Tokyo.
Em um dos projetos que estou trabalhando precisei manter a imagem da logomarca ocupando um terço da altura da tela do dispositivo, independente de qual seja o dispositivo ou seu tamanho de tela. Isso causaria uma melhor distribuição dos componentes na tela, gerando uma melhor experiência para o usuário. E para minha grata surpresa o Firemonkey disponibiliza de forma extremamente simples.
TSize
A classe TSize chama o método GetScreenSize do serviço da plataforma IFMXScreenService, que retorna a altura e a largura da tela em pixels, de acordo com a orientação da tela do dispositivo, ou seja, se a orientação for Retrato, então Altura >= Largura. Se a orientação for Paisagem, então Altura < Largura.
Obs.: Caso TSize não consiga recuperar as dimensões da tela, o retorno será 0
tanto para Height quanto para Width.
Mãos a obra
Como requisito você precisa ter declarados os namespaces FMX.Forms, System.Types. A partir daí você declara uma variável do tipo TSize e atribui a ela o retorno da chamada da Screen.Size. Veja na prática como ficaria:
var: TamanhoTela : TSize; begin ... TamanhoTela := Screen.Size;
Pronto, a partir daí você já tem carregado as propriedades de altura e largura, que são respectivamente:
TamanhoTela.cY e TamanhoTela.cX .
Exemplo
Como eu disse, no meu caso eu precisava que minha imagem de logomarca representasse 1/3 da altura da tela, o meu código ficou assim:
procedure TfrmHomeScreen.FormResize(Sender: TObject); var TamanhoTela : TSize; begin TamanhoTela := Screen.Size; ImageLogomarca.Height := Round(ScreenSize.cy * 0.33); end;
Note que implementei a alteração do tamanho no evento OnResize do form, assim se a orientação de tela for alterada as informações serão recalculadas.
Confira aí o resultado e até a próxima!
Fonte: Embarcadero DocWiki – FMX.Forms.TScreen.Size