Resolução de vídeo - Vamos procurar uma solução definitiva??

Delphi

23/08/2005

:evil: :evil:

Galera,
já utilizei quase todas as opções encontradas no forum para resolver esse problema e nenhum funciona 100¬, todos tem problemas e você acaba tendo que ficar se preocupando com distribuição de espaço no formulário.
Se você cria uma aplicação em 800x600 e utiliza o código que postei quando você utiliza em 1024x768 as fontes ficam grandes demais e existe uma má distribuição de espaço com edits, painels, etc..., o mesmo acontece ao contrario.
Já estou ficando doido com isso.
Alguém sabe como fazer para que os componentes do formulário façam como os componentes do Windows, que utilizem corretamente todos os espaços e respeitando os limites.

Implementation
const
ScreenWidth: LongInt = 800;
ScreenHeight: LongInt = 600;


procedure TForm1.FormCreate (Sender: Tobject);
begin
scaled := true;
if (screen.width <> ScreenWidth) then
begin
height := longint(height) * longint(screen.height) DIV ScreenHeight;
width := longint(width) * longint(screen.width) DIV ScreenWidth;
scaleBy(screen.width, ScreenWidth);
end;
end;



Demetrius

Demetrius

Curtidas 0

Respostas

Wilson Brito

Wilson Brito

23/08/2005

Você já utilizou a propriedade Anchors (âncoras)?

Faça um teste.


GOSTEI 0
Demetrius

Demetrius

23/08/2005

Já tentei. Vou postar as imagens do form em 800x600 e em 1024x768.

[img]C:\Farma Smart\800x600.bmp[/img]

[img]C:\Farma Smart\1024x768.bmp[/img]


GOSTEI 0
Demetrius

Demetrius

23/08/2005

Aconteceu algum problema.
Vou tentar de novo.

[img]http://C:\Farma Smart\800x600.bmp[/img]

[img]http://C:\Farma Smart\1024x768.bmp[/img]

Valeu!!!


GOSTEI 0
Demetrius

Demetrius

23/08/2005

eeeeeeeeeeeeeeeeeta!!

Não estou conseguindo!!!!

[/url]


GOSTEI 0
Massuda

Massuda

23/08/2005

Não estou conseguindo!!!!
Acho que você está com problemas para exibir uma imagem... faça assim:[list:18366d795c][*:18366d795c]Faça o upload da sua imagem no site [url=http://imageshack.us/]ImageShack[/url].[*:18366d795c]Anote/copie o link informado pelo site ImageShack para sua image[*:18366d795c]Quando for usar a tag (img), informe o link que você anotou[/list:u:18366d795c]


GOSTEI 0
Demetrius

Demetrius

23/08/2005

Valeu Massuda!!!

Vamo nós dinovo!!

800x600

1024x768




[size=15:6480942a8c][color=red:6480942a8c][b:6480942a8c]Editando o tópico.[/b:6480942a8c][/color:6480942a8c][/size:6480942a8c]

Pessoal, por favor, um detalhe!
Não coloquem imagens muito grandes que venham a distorcer o tamanho padrão do quadro do fórum, pois dificulta a visualização da imagem, bem como da leitura do texto escrito. Se possível, redimensione estas imagens!
Grata pela compreensão,
Sandra/Moderação


GOSTEI 0
Bon Jovi

Bon Jovi

23/08/2005

Acho que ficou confuso essa sua comparação sobre as resoluções de vídeo, pois vc colocou as imagens usando temas diferentes do Windows. E as fontes não mudam de tamanho (quantidade de pontos) qdo se muda resolução, somente os pontos da fonte (e tudo mais) ficam menores qdo a resolução é aumentada e vice-versa.

As âncoras resolvem problemas entre resoluções diferentes. Mas em relação a temas diferentes, tamanho de fontes diferentes e multilinguagem por exemplo, usando posionamento absoluto é complicado mesmo. No Java e .Net 2.0 por exemplo existem gerenciadores de layout nativos que deixam essas coisas mais flexíveis.

Mesmo assim queria saber exatamente como reproduzir o problema q está tendo, pra eu tb poder ajudar.


GOSTEI 0
Demetrius

Demetrius

23/08/2005

Foi mal sandra :lol: :oops:

Faça o seguinte BonJovi.

Crie um form e coloque vários componentes na resolução de 1024x768 e compile, depois mude sua resolução para 800x600. O formulário vai ficar com componentes fora da tela certo. OK!

Mede a resolução novamente para 1024x768.

Agora acrescente esse código e compile:

Implementation 
const 
ScreenWidth: LongInt = 1024; 
ScreenHeight: LongInt = 768; 


procedure TForm1.FormCreate (Sender: Tobject); 
begin 
scaled := true; 
if (screen.width <> ScreenWidth) then 
begin 
height := longint(height) * longint(screen.height) DIV ScreenHeight; 
width := longint(width) * longint(screen.width) DIV ScreenWidth; 
scaleBy(screen.width, ScreenWidth); 
end; 
end;


Mude a resolução novamente para 800x600 e rode a aplicação. Como pode perceber é necessário colocar entre os componentes do form uma diferença de espaço de pelo menos 4px para que um não sobreponha o outro. Em 800x600 e com o espaço citado acima os componentes não ficam sobrepostos, mas quando utiliza 1024x768 os espaçõs ficam grandes demais e o formulário fica muito feio.


GOSTEI 0
Demetrius

Demetrius

23/08/2005

Faltou uma coisa.

A primeira imagem é porque eu testei o sistema em uma máquina com W98 e na que desenvolvo é XP.


GOSTEI 0
Bon Jovi

Bon Jovi

23/08/2005

Agora reproduzi o q vc fez. O que faz acontecer todo esse problema é esse código que vc está usando... Sem ele a tela fica normal. Então simplesmente não esse código. O q vc está desejando exatamente? Pra facilitar poste o DFM se achar necessário mostrar alguma tela.


GOSTEI 0
Bon Jovi

Bon Jovi

23/08/2005

Consertando: Então simplesmente não use esse código.


GOSTEI 0
Bon Jovi

Bon Jovi

23/08/2005

Se está querendo colocar o form no tamanho da resolução de vídeo, apenas mande maximizá-lo:

SendMessage(Handle, WM_SIZE, SIZE_MAXIMIZED, 0);

Não esqueça de sempre usar âncoras nos controles onde for necessário.


GOSTEI 0
POSTAR