Tienes a tu disposición TCanvas.TextWidth(const Text: string) : integer;
Devuelve el largo en pixels de un texto en el tipo de letra del Canvas.
Podrías recorrer los campos y obtener el ancho de cada uno según la cantidad de caracteres que permita contener.
Código Delphi
[-]
S := StringOfChar('A', LongitudCampo);
AnchoEnPixels := Form1.Canvas.TextWidth(s);
Supongo que para un largo aproximado podrías hacer algo como lo siguiente:
Código Delphi
[-]
procedure TForm1.FormShow(Sender: TObject);
var
Bordes : integer;
Campos : integer;
AnchoCampo : integer;
begin
Bordes := 10;
Campos := 5;
AnchoCampo := Form1.Canvas.TextWidth('El ancho de este string');
Form1.Width := (Bordes * 2) + (AnchoCampo * Campos);
end;