Ver Mensaje Individual
  #3  
Antiguo 02-06-2020
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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
  // Cuanto espacio quiero dejar para bordes
  Bordes := 10;

  // Cuantos campos hay en el grid
  Campos  := 5;

  // Ancho de un campo 
  AnchoCampo := Form1.Canvas.TextWidth('El ancho de este string');

  // Establezco ancho de formulario
  Form1.Width := (Bordes * 2) + (AnchoCampo * Campos);
end;
Responder Con Cita