bjr
j'affiche à l'aide d'un TDBGrid le résultat d'une requête (TIBQuery). Je dimensionne d'abord dans le FormShow les colonnes du TDBGrid à l'aide de la taille des Title :
puis dans l’évènement OnDrawColumCell j'ajuste si nécessaire la colonne en l'agrandissant en fonction du contenu de la cellule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for I := 0 to dbgCampagne.Columns.Count - 1 do begin dbgCampagne.Columns[i].Width := 5 + dbgCampagne.Canvas.TextWidth(dbgCampagne.Columns[i].title.caption);; end;
Tout ceci fonctionne sauf que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 w := 5+dbgCampagne.Canvas.TextWidth(Column.Field.DisplayText); if w>column.Width then Column.Width := w;
Dès que le code ci-dessus est terminé et que l'application rend la main le curseur du TDBGrid est positionné sur la dernière ligne (première colonne). Il est impossible de sélectionner une cellule ou une ligne du TDBGrid avec la souris.Pour y parvenir il faut soit redimensionner la fenêtre (ce qui active à nouveau OnDrawColumCell) soit utiliser la touche TAB (ce qui fait la même chose). Ensuite seulement la souris peut être utilisée pour sélectionner des lignes. C'est ergonomiquement assez gênant. La responsabilité du code du OnDrawColumCell est certaine. Si je le retire les colonnes sont ajustées au titre mais le TDBGrid est sensible à la souris.
Les options du TDBGrid sont celles par défaut.
La propriété SQL de TIBQuery contient des agrégats (précision à toutes fins utiles)
Partager