Bonjour
J'ai fais une fonction qui permet de redimentionner automatiquement la largeur des colonnes d'une DBGrid en fonction de son contenu.
J'aimerai aussi pouvoir tenir en compte la taille du titre de la colonne mais je ne sais pas comment récupérer la valeur du titre.
Voici mon code :
procedure ResizeColumns();
var
J,MaxTextWidth, fieldwith : Integer;
begin
Form1.GridFic.datasource.DataSet.DisableControls;
// On fait toutes les colonnes du TDBGrid
For J:=0 to Form1.GridFic.FieldCount-1 do
begin
// Initialisation (largeur du titre)
MaxTextWidth :=
comment récupérer la largeur du titre de la colonne sur laquelle on pointe ?
// On recupere la longueur la plus grande contenu dans la colonne
Form1.GridFic.DataSource.DataSet.First;
while not form1.GridFic.DataSource.DataSet.Eof do
begin
fieldwith := Form1.GridFic.Canvas.TextWidth(form1.GridFic.datasource.DataSet.Fields.Fields[J].AsString);
if (fieldwith > MaxTextWidth) then MaxTextWidth := fieldwith;
Form1.GridFic.DataSource.DataSet.Next;
end;
// On applique la nouvelle taille a condition que la colonne n'était pas vide
If MaxTextWidth > 0 then form1.GridFic.Columns[J].Width := MaxTextWidth + 20;
end;
Form1.GridFic.datasource.DataSet.EnableControls;
end;