O eterno problema da diferença de resolução de vídeo

Delphi

10/01/2008

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?


Luciano.badoe

Luciano.badoe

Curtidas 0

Respostas

Delphijean

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

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)


GOSTEI 0
Edilcimar

Edilcimar

10/01/2008

troque a resolução do vídeo na inicialização do programa


GOSTEI 0
Facc

Facc

10/01/2008

troque a resolução do vídeo na inicialização do programa


e como fazer isso?


GOSTEI 0
Onjahyr

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

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]


GOSTEI 0
Luciano.badoe

Luciano.badoe

10/01/2008

[b:ab13c4e008]delphijean[/b:ab13c4e008]
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

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:

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

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.


GOSTEI 0
Delphijean

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;


GOSTEI 0
Delphijean

Delphijean

10/01/2008

veja esta materia:

http://www.guiadodelphi.com.br/ler.php?codigo=350

att,


GOSTEI 0
Luciano.badoe

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?


GOSTEI 0
Edilcimar

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


GOSTEI 0
Delphijean

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,


GOSTEI 0
Cacau

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.


GOSTEI 0
Asales

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.


GOSTEI 0
Luciano.badoe

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.


GOSTEI 0
Rodc

Rodc

10/01/2008

Verifica este post:
http://forum.devmedia.com.br/viewtopic.php?t=76039


GOSTEI 0
POSTAR