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