Eu uso a função abaixo. Veja se ela te serve. Se conseguir melhorar alguma 
coisa me mande de volta.

procedure AjustaForm2(Form: TForm);
var i, j : Integer;
begin
   if (Screen.Width = 1024) then
      Exit;

   Form.ScaleBy(1024, 768);

   for i := 0 to Form.ComponentCount - 1 do
   begin
      if (Form.Components[i] is TStringGrid) then
         for j := 0 to (Form.Components[i] as TStringGrid).ColCount-1 do
            (Form.Components[i] as TStringGrid).ColWidths[j] :=
            Round((Form.Components[i] as TStringGrid).ColWidths[j]
            * (Screen.Width/1024))
      else if (Form.Components[i] is TDBGrid) then
         for j := 0 to (Form.Components[i] as TDbGrid).Columns.Count-1 do
            (Form.Components[i] as TDbGrid).Columns[j].Width :=
            Round((Form.Components[i] as TDbGrid).Columns[j].Width
            * (Screen.Width/1024))
      else if (GetPropInfo(Form.Components[i].ClassInfo, 'Font') <> nil) 
then
         Form.Font.Size := (Screen.Width div Form.Width) * Form.Font.Size;
   end;
end; 

__________________________________________________
Faça ligações para outros computadores com o novo Yahoo! Messenger 
http://br.beta.messenger.yahoo.com/ 

Responder a