Há uns 2 anos, eu precisei implantar um formulário que deveria manter a aparência em diferentes resoluções. Após testar alguns códigos, cheguei a um que resolveu o meu problema:

[sourcecode language=”delphi”]
procedure ScaleForm(AForm: TForm);
var
i, x, y, w, sw: integer;
nEscala: Double;
nPorcento: Integer;
begin
sw := 1280; // a resolucao original, que eu utilizo em meu monitor
w := AForm.width;
AForm.Scaled := true;
if (Screen.width <> sw) then
begin
nEscala := ((Screen.Width – sw) / sw);
nPorcento := Round((nEscala * 100) + 100);

AForm.Scaleby(screen.width, sw);

for y := 0 to AForm.ComponentCount -1 do
begin
if (AForm.Components[y] is TDBGrid) and
(TDBGrid(AForm.Components[y]).Columns.Count > 0) then
begin
for x := 0 to TDBGrid(AForm.Components[y]).Columns.Count -1 do
TDBGrid(AForm.Components[y]).Columns[x].Width :=
Round(TDBGrid(AForm.Components[y]).Columns[x].Width * (nPorcento /
100));
end;
end;
end;
end;
[/sourcecode]

Chamo a função no create do form. Com isso, posso utilizar diferentes resoluções (800×600, 1024×768, etc.) e o form mantém sua aparência.

Abraços.

2 thoughts on “Dica: Adaptando Form para diferentes resoluções”

  1. não dá certo..
    gera o seguinte erros:


    [DCC Error] Unit1.pas(34): E2029 ')' expected but identifier 'lt' found
    [DCC Error] Unit1.pas(43): E2003 Undeclared identifier: 'TDBGrid'
    [DCC Error] Unit1.pas(44): E2029 ')' expected but identifier 'Columns' found
    [DCC Error] Unit1.pas(46): E2029 'DO' expected but identifier 'Columns' found
    [DCC Error] Unit1.pas(14): E2065 Unsatisfied forward or external declaration: 'TForm1.ScaleForm'
    [DCC Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'

    Uso e delphi xe2.

    1. Olá Cleber

      Referente ao erro (34), já foi corrigido no post. O WordPress trocou <> por outros carateres.

      Com relação ao erro (43), certifique-se de que a unit DBGrids esteja na cláusula uses. Quando você adiciona um dbgrid no seu form automaticamente ele adiciona as units necessárias.

      Veja isso, para verificar se existe algum outro erro.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *