[0.9.26.2] StringGrid : à quoi sert la propriété visible des colonnes ?... et pas content !
Bonjour,
j'ai posé 2 questions dans le bug tracker mais une d'entre elles a été effacée. Ce n'était peut-être pas le lieu ou alors elle était idiote. Quelqu'un va certainement pouvoir m'expliquer...
StringGrid "commune" avec 2 colonnes construites avec l'inspecteur d'objet
Je pose une StringGrid sur une Form puis définis 2 colonnes à l'aide des propriétés de l'inspecteur d'objet : Propriétés --> Clic sur "Columns" puis bouton [...].
2 colonnes sont ainsi créées : 0-title et 1-title.
Ceci fait dans l'inspecteur d'objet de la StringGrid, dans les propriétés
- Columns indique automatiquement : 2 items
- Colcount indique automatiquement : 3
- VisibleColcount indique automatiquement : 3
L'écart Columns/Colcount est logique paraît-il car par défaut les Cells[0,y] sont gsfixed... Donc le colcount serait en quelque sorte le nombre de colonnes "actives". Hormis un décalage que j'estime hasardeux et compliquant inutilement la programmation, pourquoi pas ? Là n'est pas le problème même si je trouve le concept malhabile.
Dans cette configuration de la Grid, il existe bien 3 colonnes que l'on peut "atteindre" par programmation :
- les Cells[0,y] inatteignables (donc) par Columns[x] (puisqu'ici gsFixed)
- les Cells[1,y] qui correspondent à Columns[0]
- les Cells[2,y] qui correspondent à Columns[1]
Même StringGrid avec une colonne déclarée invisible
Maintenant, je retourne dans l'inspecteur de colonnes, je clique sur 0-title par exemple et place la propriété visible de la colonne à false.
Elle existe toujours bien dans l'éditeur de colonnes [dans propriété on lit toujours Columns : 2 items] mais le Colcount de la StringGrid indique 2 (au lieu de 3 avant) et en effet un Cells[2,y] provoque une erreur.
En résumé dans l'inspecteur d'objet de la StringGrid avec une Columns[x].visible = false, dans les propriétés
- Columns indique automatiquement : 2 items
- Colcount indique automatiquement : 2
- VisibleColcount indique automatiquement : 1
Ce qui correspond au fonctionnement par programmation suivant
- les Cells[0,y] inatteignables par Columns[x]
- les Cells[1,y] qui correspondent à Columns[0]
- les Cells[2,y] qui provoquent une erreur out of range cell...
Question
Alors la question posée est la suivante : à quoi sert la propriété visible des colonnes si en réalité lorsqu'on la met à false, la columns[x] présente dans l'éditeur de colonnes de la stringGrid ipso facto n'existe plus pour la programmation puisque Columns[x] et Cells[x+1,y] povoquent l'erreur (out of range cell...) ?
Merci de m'éclairer.
Cordialement. Gilles