En FMX je fais sans problème l'ajout de colonne par programmation sur une TStringGrid après en avoir défini quelques caractéristiques dans le genre :
Si j'utilise InsertObject le ColumnCount s'incrémente de 2 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 IntegerColumn:=TIntegerColumn.Create(StringGrid); IntegerColumn.Header:='Integer'; IntegerColumn.Width:=80; StringGrid.AddObject(IntegerColumn); // StringGrid.ColumnCount s'incrémente de 1
La Colonne souhaitée s'insère à la bonne place, mais la colonne "surnuméraire" n'apparaît pas.
Et si j'essaye d'accéder cette dernière colonne définie par ColumnCount-1, j'ai une erreur d'étendue, ce qui me pose des problèmes lors d'une boucle bornée sur ColumnCount-1.
En inspectant les variables, il s'avère que la colonne que j'insère se créée bien au bon endroit, mais également en une colonne supplémentaire en dernière colonne, mais c'est une colonne "fantôme" car si elle est dans le ColumnCount elle est inaccessible car l'utilisation de son indice provoque une erreur d'étendue.
Si j'ajoute une autre colonne ensuite par AddObject, cette fameuse colonne fantôme apparaît et elle est accessible, alors même que je n'ai jamais voulu la créer.
Après plusieurs essais, la colonne fantôme qui se fabrique en double de celle qui s'insère normalement apparaît parfois, mais si je veux la supprimer, erreur violation.
Est ce que quelqu'un a déjà constaté ce phénomène ?
Merci d'avance des pistes que vous pourrez me donner.
Partager