Soyez le premier à donner votre avis sur cette source.
Snippet vu 9 730 fois - Téléchargée 36 fois
TFitDBGrid = class(TDBGrid) protected procedure LinkActive(Value: Boolean); override; end; ... procedure TFitDBGrid.LinkActive(Value: Boolean); var W : array[0..256] of integer; // Limite à 256 colonnes, on peut faire plus ou un tableau dynamique l,c : Integer; begin inherited; if Value then // Ajustement des colonnes with Datasource.DataSet do try DisableControls; for c := 0 to Columns.Count-1 do W[c] := Canvas.TextWidth(Columns[c].Title.Caption +'W'); // Largeur des titres avec un espace supplementaire First; while not EOF do begin for c := 0 to Columns.Count-1 do if assigned(Columns[c].Field) then begin l := Canvas.TextWidth(Columns[c].Field.asString+'W'); // Largeur des données if W[c] < l then W[c] := l; end; Next; end; for c := 0 to Columns.Count-1 do Columns[c].Width := W[c]; finally EnableControls; end; end;
27 oct. 2015 à 13:58
18 oct. 2004 à 23:07
Euh...ça fait 257 colonnes ou je n'y connais plus rien ! ;o)
Puisque tu parles de tableaux dynamiques, pourquoi ne pas les utiliser au lieu de déclarer un tableau statique ?
W : array of integer;
Ensuite, tu dimensionnes précisément :
if Value then // Ajustement des colonnes
With Datasource.DataSet do
try
DisableControls;
SetLength(W, Columns.Count);
for c := 0 to Columns.Count-1 do
...
Si je ne m'abuse, ton code uniformise la largeur de toutes les colonnes avec la plus grande largeur nécessaire, c'est bien cela ?
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.