O eterno problema da diferença de resolução de vídeo
Estou concluindo meu primeiro sistema em D7 e estou enfrentando um problema monstruoso com a diferença de resolução de vídeo.
Desenvolvo em 1280 x 1024 e meu cliente usa 1024 x 768. Meus lindos
formulários ficaram gigantes (como não poderia deixar de ser) nesta
resolução.
Já pesquisei, ví muitas ´soluções´, testei-as, mas nada funcionou.
Pergunto, o que fazem vocês no desenvolvimento? Utilizam uma resolução mas comum, digamos padrão (1024x768) e deixam os formulários com tamanho satisfatório nesta resolução ou há alguma forma melhor de tratar este problema?
Desenvolvo em 1280 x 1024 e meu cliente usa 1024 x 768. Meus lindos
formulários ficaram gigantes (como não poderia deixar de ser) nesta
resolução.
Já pesquisei, ví muitas ´soluções´, testei-as, mas nada funcionou.
Pergunto, o que fazem vocês no desenvolvimento? Utilizam uma resolução mas comum, digamos padrão (1024x768) e deixam os formulários com tamanho satisfatório nesta resolução ou há alguma forma melhor de tratar este problema?
Luciano.badoe
Curtidas 0
Respostas
Delphijean
10/01/2008
Meu caro, eu particulamente desenvolvo em 1024 x 768 mas tenhos clientes que tem a tela 800x600 ou 1280x1024 que o inverso do seu caso. então minha solução foi, desenvolver num tamnho que atenda a todos e como coloco meus componentes sempre dentro de um Panel por exemplo dai eu simplismente centralizo o Panel para que a tela não fique despropossional mesmo que resolução seja a mais improvavel, mantando claro a resolução minima de 800x600.
GOSTEI 0
Facc
10/01/2008
Tbm tenho o mesmo problema... até achei algumas soluções no forum, mas não sei se usei certo ou elas não funcionam.
Alguem teria uma solução definitiva para isso? Pois não quero ter que usar a mesma resolução dos meus clientes, ou seja meu programa que teria que se adaptar as várias resoluções (800x600, 1024 x 768, 1280 x 1024)
Alguem teria uma solução definitiva para isso? Pois não quero ter que usar a mesma resolução dos meus clientes, ou seja meu programa que teria que se adaptar as várias resoluções (800x600, 1024 x 768, 1280 x 1024)
GOSTEI 0
Edilcimar
10/01/2008
troque a resolução do vídeo na inicialização do programa
GOSTEI 0
Facc
10/01/2008
troque a resolução do vídeo na inicialização do programa
e como fazer isso?
GOSTEI 0
Onjahyr
10/01/2008
troque a resolução do vídeo na inicialização do programa
Não é uma opção boa, nenhum programador (ética profissional) pode manipular o computador dos outros, isso é uma regra básica. Configurações do computador devem ser alteradas pelo próprio usuário e não atravez dos nossos programas.
Qdo eu pego um programa que mexe nas minhas configurações eu desinstalo ele logo!
E mais, a resolução pode não ser adequada as configurações do hardware dele e fazer com que o Monitor seja danificado permanentemente. Quem usa Linux sabe do que estou falando! Resolução de vídeo é coisa séria. No WIndows, nas configurações mostra exatamente as opções válidas e não deixa que o usuário coloque uma que não suporta. No Linux tem como fazer isso mas fica a critério de cada um.
GOSTEI 0
Delphijean
10/01/2008
Concordo plenamente com o [b:b728dafc7d]onjahyr[/b:b728dafc7d] manipular configuração e comportamento do computador do cliente não é uma prática legal, se você não tem solução nenhuma o que vc pode fazer é colocar uma Label numa área visivel do seu sistema indicando qual a resolução indicada para o sistema tipo:
[color=red:b728dafc7d]Resolução Indicada: 1024 x 768[/color:b728dafc7d]
==Uma Saída Basíca======================
Você pode ver quanto porcento cada um dos seus componentes representam do tamanho do seu form na resolução que você usa e dai na abertura de cada tela indicar o tamanho do componente por percentual incusive do proprio form dai ele irá assumir um tamanho esteticamente correto pra cada resolução a ser usada.
[b:b728dafc7d][color=red:b728dafc7d]Dá um certo trabalho mas, funciona.[/color:b728dafc7d][/b:b728dafc7d]
[color=red:b728dafc7d]Resolução Indicada: 1024 x 768[/color:b728dafc7d]
==Uma Saída Basíca======================
Você pode ver quanto porcento cada um dos seus componentes representam do tamanho do seu form na resolução que você usa e dai na abertura de cada tela indicar o tamanho do componente por percentual incusive do proprio form dai ele irá assumir um tamanho esteticamente correto pra cada resolução a ser usada.
[b:b728dafc7d][color=red:b728dafc7d]Dá um certo trabalho mas, funciona.[/color:b728dafc7d][/b:b728dafc7d]
GOSTEI 0
Luciano.badoe
10/01/2008
[b:ab13c4e008]delphijean[/b:ab13c4e008]
Como fazer isso?
Você pode ver quanto porcento cada um dos seus componentes representam do tamanho do seu form na resolução que você usa e dai na abertura de cada tela indicar o tamanho do componente por percentual incusive do proprio form dai ele irá assumir um tamanho esteticamente correto pra cada resolução a ser usada.
Como fazer isso?
GOSTEI 0
Delphijean
10/01/2008
vai um exemplo:
vc tem uam tela com as seguinte medidas
[b:c3bd8e6eae]W[/b:c3bd8e6eae]idth: 200 [b:c3bd8e6eae]H[/b:c3bd8e6eae]eight: XXXX
e dois Edits um com W: 60 outro com W: 140 então,
o Primeiro tem um W: de 30¬ da tela e o segundo Wde 70¬ da tela;
dai no evento onShow do Form vc diz que:
veja que o [b:c3bd8e6eae]Round()[/b:c3bd8e6eae] é usado porque os propriedades Width não aceita numeros flutuantes...
agora basta vc adaptar ao que vc quer.
vc tem uam tela com as seguinte medidas
[b:c3bd8e6eae]W[/b:c3bd8e6eae]idth: 200 [b:c3bd8e6eae]H[/b:c3bd8e6eae]eight: XXXX
e dois Edits um com W: 60 outro com W: 140 então,
o Primeiro tem um W: de 30¬ da tela e o segundo Wde 70¬ da tela;
dai no evento onShow do Form vc diz que:
procedure formShow... begin Edit1.Width := Round((Self.Width * 30) / 100); Edit2.Width := Round((Self.Width * 70) / 100); end;
veja que o [b:c3bd8e6eae]Round()[/b:c3bd8e6eae] é usado porque os propriedades Width não aceita numeros flutuantes...
agora basta vc adaptar ao que vc quer.
GOSTEI 0
Luciano.badoe
10/01/2008
[b:0c6c7bb283]delphijean[/b:0c6c7bb283]
Obrigado pelo exemplo.
Mas sobre o próprío form, digamos que ele está legal em 1280 x 1024 e desejamos adaptá-lo para 1024 x 768, neste caso vc aplica um valor de redução para o mesmo?
Valeu.
Obrigado pelo exemplo.
Mas sobre o próprío form, digamos que ele está legal em 1280 x 1024 e desejamos adaptá-lo para 1024 x 768, neste caso vc aplica um valor de redução para o mesmo?
Valeu.
GOSTEI 0
Delphijean
10/01/2008
Meu caro se você passar o percentual das propriedades Width e/ou Height dos objetos quando a sua resolução de tela for igual a 1280 x 1024 quando, sua resolução de tela for igual a 1024 x 768 jpa estrá tudo pronto. tipo:
em 1280 x 1024 o objeto Edit1.Width é igual a 100 que representa 10¬ do width do form quando estiver em 1024x768 o Edit1.Width é igual a 85 porém o percentual é o mesmo 10¬.
esperero que tenha entendido;
em 1280 x 1024 o objeto Edit1.Width é igual a 100 que representa 10¬ do width do form quando estiver em 1024x768 o Edit1.Width é igual a 85 porém o percentual é o mesmo 10¬.
esperero que tenha entendido;
GOSTEI 0
Delphijean
10/01/2008
veja esta materia:
http://www.guiadodelphi.com.br/ler.php?codigo=350
att,
http://www.guiadodelphi.com.br/ler.php?codigo=350
att,
GOSTEI 0
Luciano.badoe
10/01/2008
[b:8a71c64b6d]delphijean[/b:8a71c64b6d]
Desculpe, me expressei mal.
Nas verdade me referia diretamente ao objeto do formulário.
Sabendo que o edit1 representa 10¬ do form, sei que vou manter este padrão, mas e o form. Como ter idéia do percentual?
Desculpe, me expressei mal.
Nas verdade me referia diretamente ao objeto do formulário.
Sabendo que o edit1 representa 10¬ do form, sei que vou manter este padrão, mas e o form. Como ter idéia do percentual?
GOSTEI 0
Edilcimar
10/01/2008
Você não vai trocar a definição definitivamente, apenas para uso do seu programa, se você olhar os jogos fazem isto, trocam a resolução para um determinado padrão e ao sair voltam a definição anterior
vc pode fazer 2 coisas
1)
If (Screen.Width < 800) or (Screen.Height < 600) then
Begin
ShowMessage(´A CONFIGURAÇAO MÍNIMA DA TELA É 800x600 PIXELS´ + #13 + 10 + ´A configuração atual está ´ + IntToStr(Screen.Width) + ´x´ +
IntToStr(Screen.Height));
Application.Terminate;
End
2)
DevMode.dmPelsWidth := 800;
DevMode.dmPelsHeight := 600;
neste caso salve a definição anterior em 2 variáveis para ao terminar o programa redefiní-la como estava
vc pode fazer 2 coisas
1)
If (Screen.Width < 800) or (Screen.Height < 600) then
Begin
ShowMessage(´A CONFIGURAÇAO MÍNIMA DA TELA É 800x600 PIXELS´ + #13 + 10 + ´A configuração atual está ´ + IntToStr(Screen.Width) + ´x´ +
IntToStr(Screen.Height));
Application.Terminate;
End
2)
DevMode.dmPelsWidth := 800;
DevMode.dmPelsHeight := 600;
neste caso salve a definição anterior em 2 variáveis para ao terminar o programa redefiní-la como estava
GOSTEI 0
Delphijean
10/01/2008
Pois é como havia dito antes
veja esta matéria: http://www.guiadodelphi.com.br/ler.php?codigo=350
observer o que ele faz com o width e height do form, além do ScaleBy();
att,
veja esta matéria: http://www.guiadodelphi.com.br/ler.php?codigo=350
observer o que ele faz com o width e height do form, além do ScaleBy();
att,
GOSTEI 0
Cacau
10/01/2008
Eu faço uso das propriedades Align e Anchors!
É fácil e em vc pode testar em tempo de projeto, além de que os clientes que possuem uma resolução maior se beneficiam com o aproveitamento da tela.
É fácil e em vc pode testar em tempo de projeto, além de que os clientes que possuem uma resolução maior se beneficiam com o aproveitamento da tela.
GOSTEI 0
Asales
10/01/2008
Cacau,
Também utilizo um esquema parecido alterando estas propriedades para cada componente e alinhando, principalmente grids ou dbgrids, para ocupar um espaço maior na tela.
Com a popularização dos monitores 19´, 21´ e com resoluções maiores, penso que se tentar adaptar a tela do aplicativo a resolução vai chegar num ponto em que, num monitor com resolução maior, um Edit vai parecer um memo com fonte 48 e o usuário não vai aproveitar todo o espaço da tela que possui.
Também utilizo um esquema parecido alterando estas propriedades para cada componente e alinhando, principalmente grids ou dbgrids, para ocupar um espaço maior na tela.
Com a popularização dos monitores 19´, 21´ e com resoluções maiores, penso que se tentar adaptar a tela do aplicativo a resolução vai chegar num ponto em que, num monitor com resolução maior, um Edit vai parecer um memo com fonte 48 e o usuário não vai aproveitar todo o espaço da tela que possui.
GOSTEI 0
Luciano.badoe
10/01/2008
[b:e478d4f9bd]Cacau[/b:e478d4f9bd]
Ainda não consegui resolver o problema (saudade do Clipper!!!).
Estou usando um paleativo (mudar resolução de vídeo).
Usei o código que o sales indicou, ficou muito ruim... não sei mais o que fazer!
Me dê uma dica de uso das propriedades que você mencionou.
Obrigado.
Ainda não consegui resolver o problema (saudade do Clipper!!!).
Estou usando um paleativo (mudar resolução de vídeo).
Usei o código que o sales indicou, ficou muito ruim... não sei mais o que fazer!
Me dê uma dica de uso das propriedades que você mencionou.
Obrigado.
GOSTEI 0
Rodc
10/01/2008
Verifica este post:
http://forum.devmedia.com.br/viewtopic.php?t=76039
http://forum.devmedia.com.br/viewtopic.php?t=76039
GOSTEI 0