Listbox collection : quelle est la colonne modifiée?

Hello,

Je patine sur un truc bête :

En v18, j’ai construit une listbox sur une collection.
Quand je modifie une cellule, comment je fais pour savoir quelle est la colonne concernée ?

J’aimerais éviter d’avoir une méthode dans chaque colonne.
Avec les listbox tableau, je faisais un
LISTBOX GET CELL POSITION(*;$vtFormObjet;$vlColonne;$vlLigne;$vpColonne)
et je repérais ma colonne avec $vpColonne.

Merci d’avance.

Bon je dirai que ce n’est pas bien compliqué :roll_eyes:

$NomObj:=OBJECT Get name(Object current)
LISTBOX GET CELL POSITION(*;$NomObj;$column;$line)

tu as la colonne dans $column dans laquelle tu as cliqué et donc, modifié ta cellule

Ce qui me gêne dans cette approche, c’est que je dois me baser sur le numéro de la colonne :
si je réorganise mon interface, je dois reprendre mon code, ou faire un bind pour dire quelle valeur est affichée dans quelle colonne.

C’est pourquoi je me basais avant sur le pointeur vers la colonne : c’est transparent.
J’imagine que je dois pouvoir retrouver mes petits avec LISTBOX GET ARRAYS, mais je me demande si je ne passe pas à côté de quelque chose de plus simple.

J’ai ce code non pas dans chacune des colonnes mais dans le widget Listbox.

Oui je place également ce code dans la listbox et non dans ses colonnes.

Si j’ai bien compris ce que tu proposes, si $column me retourne 1, je dois savoir que ma colonne 1 contient “This.IsChecked” par ex. pour pouvoir traiter spécifiquement une case qui viendrait d’être cochée.
Donc avec cette approche, je devrais écrire :

Case of
:($column=1)
// Faire ceci
:($column=2)
// Faire cela
End case

Avec les listbox tableau, j’avais pris l’habitude d’écrire quelque chose du genre :

Case of
:($vpColonne=->tbColonneIsChecked)
// Faire ceci
:($vpColonne=->ttColonneIntitule)
// Faire cela
End case

un peu plus de code:

$NomObj:=OBJECT Get name(Object current)
LISTBOX GET CELL POSITION(*;$NomObj;$column;$line)
ARRAY TEXT($tabPropertyNames;0x0000)
OB GET PROPERTY NAMES(Form.result[$line-1];$tabPropertyNames)
If ($column>0)
	Form.column:=$tabPropertyNames{$column}
End if 

Merci pour les retours.
J’ai écris ça, tant que je ne trouve pas plus direct :

$vtListboxName:=OBJECT Get name(Object current)
LISTBOX GET CELL POSITION(*;$vtListboxName;$vlColumn;$vlRow)

ARRAY TEXT($ttObjectName;0x0000)
LISTBOX GET OBJECTS(*;$vtListboxName;$ttObjectName)

$vlPos:=(($vlColumn-1)*3)+1

If (Asserted($vlPos<=Size of array($ttObjectName)))
	$vtColumnName:=$ttObjectName{$vlPos}
End if 

$0:=$vtColumnName