Ajuster automatiquement la largeur des champs d'une tdbgrid [Résolu]

cs_oluha 71 Messages postés vendredi 19 mars 2004Date d'inscription 5 février 2009 Dernière intervention - 8 déc. 2004 à 10:41 - Dernière réponse : jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention
- 9 déc. 2004 à 08:58
Bonjour

J'ai une tdbgrid que je rempli avec les données d'une table sous access. Seulement la largeur des champs est trop grande et j'aimerai donc qu'elle soit automatiquement ajustée au contenu du champ quand je charge mes données dans la grille.
J'ai trouvé sur le site une source qui permet de faire ca sur un champ quand on double clique dessus mais je n'arrive pas à l'adapter pour que ca s'applique à tous les champs de la grille.
Si quelqu'un pouvait m'aider...

Merci
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_grandvizir 1237 Messages postés samedi 8 novembre 2003Date d'inscription 3 septembre 2006 Dernière intervention - 8 déc. 2004 à 13:51
3
Merci
En ce qui concerne les TStringGrid, voir ce code source de jmp77.

TDBGrid doit dériver de TStringGrid. Ca devrait marcher...

===========
Validez les réponses si ok...

Merci cs_grandvizir 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_grandvizir
cs_oluha 71 Messages postés vendredi 19 mars 2004Date d'inscription 5 février 2009 Dernière intervention - 8 déc. 2004 à 14:58
0
Merci
Merci pour le tuyau, j'ai réussi à adapter le code. Voici ma procedure pour les personnes que ca interresse :

procedure ResizeColumns();

var
J,MaxTextWidth, fieldwith : Integer;

begin

   // On fait toutes les colonnes du TDBGrid
   For J:=0 to Form1.GridFic.FieldCount-1 do
   begin
      // Initialisation
      MaxTextWidth := 0;

      // 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;
end;
Commenter la réponse de cs_oluha
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 8 déc. 2004 à 18:09
0
Merci
C'est cool j'avais pas encore adapter mon code de redimensionnement des stringgrid au dbgrid. Ca me ferra gagner du temps pour quand je le ferrai.

Merci pour ton code.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Commenter la réponse de jmp77
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 9 déc. 2004 à 01:05
0
Merci
Pour ceux que le sujet intéresse vraiment, jettez un oeil ICI.

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 9 déc. 2004 à 08:58
0
Merci
Merci pour ce lien très interessant delphiprog.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Commenter la réponse de jmp77

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.