Delphi Abrir Form Secundário e posicionando ele no centro do form Principal com deslocamento para cima

Delphi

31/03/2023

Bom dia amigos.

Gostaria de uma ajuda de vocês ...
Tenho um form Principal que esta abrindo no centro da Tela , pois sua propriedade no Object Inspector esta como "poScreenCenter"
que chamar um segundo form acima desse principal, este form secundário esta com sua propriedade no Object Inspector como "poMainFormCenter" , ou seja , vai abrir no centro do form Principal.
é aqui que queria mudar ... gostaria que ele abrisse com deslocamento de 2 centímetros para cima do centro do form Principal.

em resumo, abrir o form secundário no centro do principal , em seguida deslocar ele para cima (TOP) .

Não posso deixar esse valor fixo nas propriedades, porque dependendo da resolução do monitor , não vai certo ....

Antecipo cordial agradecimento a todos por me ajudar.
Mauricio Gabriel

Mauricio Gabriel

Curtidas 0

Melhor post

Arthur Heinrich

Arthur Heinrich

31/03/2023

Você precisa ajustar dinamicamente as propriedades do form 2, para a posição que deseja.

Supondo que você não precisa alterar o tamanho dos forms 1 e 2, terá que ajustar apenas as propriedades Top e Left.

Para ajustar o form 2 ao centro do form 1, você pode utilizar:

  Form2.Left:=Form1.Left+((Form1.Width-Form2.Width) div 2);
  Form2.Top:=Form1.Top+((Form1.Height-Form2.Height) div 2);


Se quer que seja um pouco mais para cima:

  Form2.Left:=Form1.Left+((Form1.Width-Form2.Width) div 2);
  Form2.Top:=Form1.Top+((Form1.Height-Form2.Height) div 2) - 60;


Calcular 2 cm exatos exige que você tenha acesso a informações sobre a resolução do monitor, que pode variar bastante.
No exemplo eu chutei 60 pixels, baseado numa resolução de aproximadamente 75 pixels/polegada.

Você pode adicionar este código no evento OnShow, por exemplo.
GOSTEI 1

Mais Respostas

Mauricio Gabriel

Mauricio Gabriel

31/03/2023

Você precisa ajustar dinamicamente as propriedades do form 2, para a posição que deseja.

Supondo que você não precisa alterar o tamanho dos forms 1 e 2, terá que ajustar apenas as propriedades Top e Left.

Para ajustar o form 2 ao centro do form 1, você pode utilizar:

  Form2.Left:=Form1.Left+((Form1.Width-Form2.Width) div 2);
  Form2.Top:=Form1.Top+((Form1.Height-Form2.Height) div 2);


Se quer que seja um pouco mais para cima:

  Form2.Left:=Form1.Left+((Form1.Width-Form2.Width) div 2);
  Form2.Top:=Form1.Top+((Form1.Height-Form2.Height) div 2) - 60;


Calcular 2 cm exatos exige que você tenha acesso a informações sobre a resolução do monitor, que pode variar bastante.
No exemplo eu chutei 60 pixels, baseado numa resolução de aproximadamente 75 pixels/polegada.

Você pode adicionar este código no evento OnShow, por exemplo.



Boa tarde Arthur Heinrich ...
Muito obrigado por sua contribuição em aumentar nosso conhecimento e compartilhar esse conhecimento ...
Vou aplicar aqui ... Muito obrigado...

Só não sei como colocar o status como [Resolvido] ....
GOSTEI 0
POSTAR