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.
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.
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.