GARANTIR DESCONTO

Fórum Centralizar Form #339416

27/03/2007

0

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


Roger1976

Roger1976

Responder

Posts

27/03/2007

Dbergkamps10

vc ja tentou no position ´poscreencenter´?


Responder

Gostei + 0

27/03/2007

Roger1976

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...


Responder

Gostei + 0

27/03/2007

Massuda

Talvez :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=57797]este tópico[/url] seja útil para você.


Responder

Gostei + 0

27/03/2007

Roger1976

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.


Responder

Gostei + 0

27/03/2007

Massuda

Screen.Width e Screen.Height tem as dimensões da tela.


Responder

Gostei + 0

28/03/2007

Dmenin

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


Responder

Gostei + 0

28/03/2007

Janete

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


Responder

Gostei + 0

28/03/2007

Roger1976

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!


Responder

Gostei + 0

29/03/2007

Dmenin

;)

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


Responder

Gostei + 0

29/03/2007

Roger1976

... 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!!!


Responder

Gostei + 0

30/03/2007

Dmenin

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar