Como redimencionar objetos
Olá Pessoal!
Meu maior problema é a parte do Design do programa.
Tenho aqui um codigo que me ajuda a resolver os problemas do redimencionamento da tela para qualquer resolução de vídeo. Ou seja, o formulário cobrirá toda a tela independente da resolução.
O codigo abaixo:
if Components[i] is TWinControl then begin // Redefine os componentes em proporção ao original
TWinControl(Components[i]).Width := Round(TWinControl(Components[i]).Width * (Screen.Width / iWidth));
TWinControl(Components[i]).Height := Round(TWinControl(Components[i]).Height * (Screen.Height / iHeight));
TWinControl(Components[i]).Left := Round(TWinControl(Components[i]).Left * (Screen.Width / iWidth));
TWinControl(Components[i]).Top := Round(TWinControl(Components[i]).Top * (Screen.Height / iHeight));
end;
Reposiciona os objetos no formulário, mas não esta redimencionando-os. Sendo assim, se eu coloco um botão ao lado do outro sem espaço, quando executo em uma tela com resolução maior da que o programa foi desenvolvido, os botões se reposicionam de acordo com o formulário mas não se extendem para ficarem na forma original, sem espaço.
O código completo que estou usando é esse:
procedure AdaptaResolucaoDeVideo(Formulario: TForm; iWidth, iHeight : SmallInt);
var
i : integer;
begin
with Formulario do begin
// Expande form independente da resolução
Left := 0;
Top := 0;
Width := Screen.Width;
Height := Screen.Height;
for i := 0 to ComponentCount -1 do begin // Varre todos os componentes do form que possam ser redefinidos (classe TWinControl)
if Components[i] is TWinControl then begin // Redefine os componentes em proporção ao original
TWinControl(Components[i]).Width := Round(TWinControl(Components[i]).Width * (Screen.Width / iWidth));
TWinControl(Components[i]).Height := Round(TWinControl(Components[i]).Height * (Screen.Height / iHeight));
TWinControl(Components[i]).Left := Round(TWinControl(Components[i]).Left * (Screen.Width / iWidth));
TWinControl(Components[i]).Top := Round(TWinControl(Components[i]).Top * (Screen.Height / iHeight));
end;
end;
// Redefine o Formulário
Width := Round(Width * (Screen.Width / iWidth));
Height := Round(Height * (Screen.Height / iHeight));
Top := Round(Top * (Screen.Height / iHeight));
Left := Round(Left * (Screen.Width / iWidth));
// Altera o tamanho da Fonte do Formulário
Font.Size := Round(Font.Size * (Screen.Height / iHeight));
end;
end;
Alguém tem alguma solução ou algum codigo de exemplo que resolva isso: vagner.almeida.rj@gmail.com
Agradeço desde já qualquer ajuda.
Meu maior problema é a parte do Design do programa.
Tenho aqui um codigo que me ajuda a resolver os problemas do redimencionamento da tela para qualquer resolução de vídeo. Ou seja, o formulário cobrirá toda a tela independente da resolução.
O codigo abaixo:
if Components[i] is TWinControl then begin // Redefine os componentes em proporção ao original
TWinControl(Components[i]).Width := Round(TWinControl(Components[i]).Width * (Screen.Width / iWidth));
TWinControl(Components[i]).Height := Round(TWinControl(Components[i]).Height * (Screen.Height / iHeight));
TWinControl(Components[i]).Left := Round(TWinControl(Components[i]).Left * (Screen.Width / iWidth));
TWinControl(Components[i]).Top := Round(TWinControl(Components[i]).Top * (Screen.Height / iHeight));
end;
Reposiciona os objetos no formulário, mas não esta redimencionando-os. Sendo assim, se eu coloco um botão ao lado do outro sem espaço, quando executo em uma tela com resolução maior da que o programa foi desenvolvido, os botões se reposicionam de acordo com o formulário mas não se extendem para ficarem na forma original, sem espaço.
O código completo que estou usando é esse:
procedure AdaptaResolucaoDeVideo(Formulario: TForm; iWidth, iHeight : SmallInt);
var
i : integer;
begin
with Formulario do begin
// Expande form independente da resolução
Left := 0;
Top := 0;
Width := Screen.Width;
Height := Screen.Height;
for i := 0 to ComponentCount -1 do begin // Varre todos os componentes do form que possam ser redefinidos (classe TWinControl)
if Components[i] is TWinControl then begin // Redefine os componentes em proporção ao original
TWinControl(Components[i]).Width := Round(TWinControl(Components[i]).Width * (Screen.Width / iWidth));
TWinControl(Components[i]).Height := Round(TWinControl(Components[i]).Height * (Screen.Height / iHeight));
TWinControl(Components[i]).Left := Round(TWinControl(Components[i]).Left * (Screen.Width / iWidth));
TWinControl(Components[i]).Top := Round(TWinControl(Components[i]).Top * (Screen.Height / iHeight));
end;
end;
// Redefine o Formulário
Width := Round(Width * (Screen.Width / iWidth));
Height := Round(Height * (Screen.Height / iHeight));
Top := Round(Top * (Screen.Height / iHeight));
Left := Round(Left * (Screen.Width / iWidth));
// Altera o tamanho da Fonte do Formulário
Font.Size := Round(Font.Size * (Screen.Height / iHeight));
end;
end;
Alguém tem alguma solução ou algum codigo de exemplo que resolva isso: vagner.almeida.rj@gmail.com
Agradeço desde já qualquer ajuda.
Vagner Almeida
Curtidas 0
Respostas
Pjrm1470
27/06/2011
oi!
Qual delphi você está usando?
Todos os componentes podem ser redimencionados sem "estragar" o design e posicionamento deles, com as propriedades:
- Align
- Anchors
As ancoras fazem com que sem componente permaneta parado na direção em que você o definir. É menos trabalhoso que ficar utilizando algoritimo de escala. Dê um "Google" que você encontra muitos codigos prontos para escalonar componente ou o form de acordo com o tamanho da tela.
Abraço,
pjrm1470.
Qual delphi você está usando?
Todos os componentes podem ser redimencionados sem "estragar" o design e posicionamento deles, com as propriedades:
- Align
- Anchors
As ancoras fazem com que sem componente permaneta parado na direção em que você o definir. É menos trabalhoso que ficar utilizando algoritimo de escala. Dê um "Google" que você encontra muitos codigos prontos para escalonar componente ou o form de acordo com o tamanho da tela.
Abraço,
pjrm1470.
GOSTEI 0
Wilson Junior
27/06/2011
De uma olhada neste link https://www.devmedia.com.br/forum/viewtopic.asp?id=391295
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0