Centralizar Form
Saudações!!!!!!!!
Estou com um problema que é muito comum encontrá-lo no form. Tentei todas as alternativas, mas ao fazer testes, infelizmente encontrei a solução.
Parece brincadeira, mas não estou conseguindo centralizar o form em termos. Estou utilizando as propriedades borderstyle (deve ser bsdialog, somente com o botão fechar) e position (podesktopcenter). Quando utilizo um resolução 800x600, percebo que a parte inferior da tela fica encoberta pela barra de tarefas. Na verdade, o form deve ser centralizado dentro de uma área que compreende apenas o local onde o papel de parede é exibido. Como faço isso????
Desculpem-me por postar esta pergunta ´infantil´, mas como disse anteriormente, nenhuma das soluções que encontrei não resolveram o problema.
Desde já agradeço pela atenção e aguardo uma resposta (pode xingar, não tem problema... rs rs rs rs rs)...
Um abraço,
Rogério
Estou com um problema que é muito comum encontrá-lo no form. Tentei todas as alternativas, mas ao fazer testes, infelizmente encontrei a solução.
Parece brincadeira, mas não estou conseguindo centralizar o form em termos. Estou utilizando as propriedades borderstyle (deve ser bsdialog, somente com o botão fechar) e position (podesktopcenter). Quando utilizo um resolução 800x600, percebo que a parte inferior da tela fica encoberta pela barra de tarefas. Na verdade, o form deve ser centralizado dentro de uma área que compreende apenas o local onde o papel de parede é exibido. Como faço isso????
Desculpem-me por postar esta pergunta ´infantil´, mas como disse anteriormente, nenhuma das soluções que encontrei não resolveram o problema.
Desde já agradeço pela atenção e aguardo uma resposta (pode xingar, não tem problema... rs rs rs rs rs)...
Um abraço,
Rogério
Roger1976
Curtidas 0
Respostas
Dbergkamps10
27/03/2007
vc ja tentou no position ´poscreencenter´?
GOSTEI 0
Roger1976
27/03/2007
Meu amigo, já usei esta opção, mas, como disse anteriormente, numa resolução 800x600, a parte inferior da tela fica encoberta, na verdade, não é isso que eu quero. Eu já vi sistemas em que é exibida na área que compreende o papel de parede (deve haver algo que não conte a barra de tarefas do windows).
De qualquer forma, valeu...
De qualquer forma, valeu...
GOSTEI 0
Massuda
27/03/2007
Talvez :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=57797]este tópico[/url] seja útil para você.
GOSTEI 0
Roger1976
27/03/2007
Massuda, ainda não funcionou como eu gostaria. Só há um detalhe importante que esqueci de esplanar na minha dúvida, o que me importa é centralizar na área livre, como vc havia dito, somente quando a resolução é 800x600, numa resolução maior, não tem problema, visto que a barra de tarefas não irá sobrepor a parte inferior da tela, onde coloquei alguns botões. Eu sei que é possível, pois já vi uma aplicação com telas alinhadas dentro da área mencionada anteriormente.
Muito obrigado pela dica, e espero que agora tenha ficado clara a minha dúvida.
Muito obrigado pela dica, e espero que agora tenha ficado clara a minha dúvida.
GOSTEI 0
Massuda
27/03/2007
Screen.Width e Screen.Height tem as dimensões da tela.
GOSTEI 0
Dmenin
27/03/2007
faz uma gambiarra ae...coloca no create do form
if scree.with = 800 then
form.top:=x
ae vc seta o top conforme vc acha correto
if scree.with = 800 then
form.top:=x
ae vc seta o top conforme vc acha correto
GOSTEI 0
Janete
27/03/2007
Qdo preciso centralizar um form que é alterado seu tamanho durante a abertura, eu faço da seguinte, no FormShow após alterar o tamanho do forma eu coloco o seguinte:
Form.left := ( Screen.Width div 2 ) - ( Form.Width div 2 );
Form.Top := ( Screen.Height div 2 ) - ( Form.height div 2 );
:D
Form.left := ( Screen.Width div 2 ) - ( Form.Width div 2 );
Form.Top := ( Screen.Height div 2 ) - ( Form.height div 2 );
:D
GOSTEI 0
Roger1976
27/03/2007
Antes de mais nada, obrigado pela atenção de todos nesta questão. Analisando as respostas de todos, encontrei a solução finalmente.
No oncreate do form, digite o seguinte bloco:
if (Screen.Width = 800) and (Screen.Height = 600) then
frmPrincipal.Position := poDefault
else
frmPrincipal.Position := poScreenCenter;
Conclusão: o poDefault é o ideal para telas 800x600, porque ele preenche todo o espaço da área de trabalho, sem sobrepor a barra de tarefas. Numa resolução diferente, posso utilizar perfeitamente o poScreenCenter.
Muito fácil!!!!!!!
Muito obrigado!
No oncreate do form, digite o seguinte bloco:
if (Screen.Width = 800) and (Screen.Height = 600) then
frmPrincipal.Position := poDefault
else
frmPrincipal.Position := poScreenCenter;
Conclusão: o poDefault é o ideal para telas 800x600, porque ele preenche todo o espaço da área de trabalho, sem sobrepor a barra de tarefas. Numa resolução diferente, posso utilizar perfeitamente o poScreenCenter.
Muito fácil!!!!!!!
Muito obrigado!
GOSTEI 0
Dmenin
27/03/2007
;)
só nao esquece que 800x600 e 1024x768 não são as únicas resoluções de tela..sempre vai ter aquele que usa o sistema com resolução mais alta ou num notebook com widescreen
só nao esquece que 800x600 e 1024x768 não são as únicas resoluções de tela..sempre vai ter aquele que usa o sistema com resolução mais alta ou num notebook com widescreen
GOSTEI 0
Roger1976
27/03/2007
... dmenin, valeu pela observação, só fiz uma alteração, ao invés de colocar o código no oncreate, coloquei no onactivate, pois percebi que ao mudar a resolução da tela para 800x600, aparecia a mensagem de erro
´cannot change visible in onshow or onhide´, porém a tela desejada era aberta.
Não sei se é a melhor solução, mas farei mais testes.
Espero que todos(as) aqueles(as) que tiverem visto(vendo) a solução que adotei possam sugestionar, para que tenhamos enfim algo que possa ajudar a quem estiver passando pela mesma dificuldade.
Valeu!!!
´cannot change visible in onshow or onhide´, porém a tela desejada era aberta.
Não sei se é a melhor solução, mas farei mais testes.
Espero que todos(as) aqueles(as) que tiverem visto(vendo) a solução que adotei possam sugestionar, para que tenhamos enfim algo que possa ajudar a quem estiver passando pela mesma dificuldade.
Valeu!!!
GOSTEI 0
Dmenin
27/03/2007
bah..ae no meu ver tu tem otro problema.
se vc trabalha com forms child e deixa vários abertos, permitindo q o usuário interaja com + de um ao memso tempo, vai ficar ruim pra ele pois sempre que voltar o foco para esse seu form o sistema vai jogar ele pro meio denovo...bom, mas nada q vc não possa tratar com + uma variável de controle
se vc trabalha com forms child e deixa vários abertos, permitindo q o usuário interaja com + de um ao memso tempo, vai ficar ruim pra ele pois sempre que voltar o foco para esse seu form o sistema vai jogar ele pro meio denovo...bom, mas nada q vc não possa tratar com + uma variável de controle
GOSTEI 0