PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 25 → Savoir si une colonne de table est désélectionnée via le menu contextuel
Savoir si une colonne de table est désélectionnée via le menu contextuel
Iniciado por Pampi, 09,dic. 2019 11:32 - 12 respuestas
Miembro registrado
119 mensajes
Publicado el 09,diciembre 2019 - 11:32
Bonjour,

Le menu contextuel d'une table permet à l'utilisateur de sélectionner ou pas une ou plusieurs colonnes de la table (ce choix est automatiquement mémorisé).

Comment savoir, à l'ouverture de la fenêtre contenant une table, si une colonne est sélectionnée ou désélectionnée par l'utilisateur via l'option "Sélectionner les colonnes" du menu contextuel de la table ?

Exemple dans mon logiciel :

une facture est gérée en HT ou en TTC
si c'est en HT, le logiciel affiche, pour chaque ligne de facture, la colonne "Prix HT" et cache la colonne "Prix TTC"
si c'est en TTC, le logiciel affiche, pour chaque ligne de facture, la colonne "Prix TTC" et cache la colonne "Prix HT"


Mais l'utilisateur peut demander à ne pas afficher la colonne qui est censée s'afficher ("Prix HT" dans le 1er cas, "Prix TTC" dans le 2nd cas : il utilise alors l'option "Sélectionner les colonnes" du menu contextuel de la table des lignes de facture et décoche la colonne qu'il ne souhaite pas voir affichée.

J'ai donc besoin de connaître, à l'ouverture de la fenêtre, les colonnes que l'utilisateur ne souhaite pas voir affichée.

Avez-vous une idée pour arriver à mes fins ?

Merci par avance pour votre aide.

Bon dév.

Pampi
Publicado el 09,diciembre 2019 - 13:19
bVisibleColonne1,bVisibleColonne2 sont des booléens
Tu peux utiliser la propriété d'une Colonne
bVisibleColonne1 = Table1.Colonne1..visible
bVisibleColonne2 = Table1.Colonne2..visible
Miembro registrado
119 mensajes
Publicado el 09,diciembre 2019 - 16:25
Bonjour Alain,

Merci pour ta réponse.

Malheureusement, ça ne fonctionne pas, la valeur Table1.Colonne1..Visible (placé dans les déclarations globales de la fenêtre contenant ma table) est systématiquement à 1 (Vrai) à l'ouverture de la fenêtre, même si j'ai désélectionné la colonne Colonne1 précédemment : effectivement, la colonne Colonne1 s'affiche malgré mon choix précédent.
L'info est peut-être stockée dans la base de registre ?

Merci encore.
Miembro registrado
1.189 mensajes
Publicado el 09,diciembre 2019 - 17:14
Bonjour,
Les données de réglage sont en effet stockées dans la BDR. Regarde l'article sur la persistance des données dans la doc

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
137 mensajes
Publicado el 09,diciembre 2019 - 19:53
Pampi a écrit :

Comment savoir, à l'ouverture de la fenêtre contenant une table, si une colonne est sélectionnée ou désélectionnée par l'utilisateur via l'option "Sélectionner les colonnes" du menu contextuel de la table ?

Bonjour;
On peut le savoir via l'option "Sélectionner les colonnes" du menu contextuel de la table.;)

Autre Option :
Décocher l'option : "Mémoriser la config. des colonnes" dans l'onglet détail de la Table.

Bon Dev
Miembro registrado
119 mensajes
Publicado el 10,diciembre 2019 - 08:41
Voroltinquo a écrit :
Bonjour,
Les données de réglage sont en effet stockées dans la BDR. Regarde l'article sur la persistance des données dans la doc

--
Il y a peut être plus simple, mais, ça tourne


Bonjour,

Merci pour ta réponse.

Le ST m'a confirmé que l'info était dans la BDR et m'a même gentiment donné l'adresse exacte : Ordinateur\HKEY_CURRENT_USER\Software\<NomSociété>\<NomApplication>\<NomFenetre>\<NomChampTable>\<colonne>

Bon dév.

Pampi
Miembro registrado
119 mensajes
Publicado el 10,diciembre 2019 - 08:42
Fouedusa a écrit :
Pampi a écrit :

Comment savoir, à l'ouverture de la fenêtre contenant une table, si une colonne est sélectionnée ou désélectionnée par l'utilisateur via l'option "Sélectionner les colonnes" du menu contextuel de la table ?

Bonjour;
On peut le savoir via l'option "Sélectionner les colonnes" du menu contextuel de la table.

Autre Option :
Décocher l'option : "Mémoriser la config. des colonnes" dans l'onglet détail de la Table.

Bon Dev


Bonjour,

Merci pour ta réponse mais ma demande sous-entendait que je recherchais l'info par programmation...

Merci quand même.
Miembro registrado
1.189 mensajes
Publicado el 10,diciembre 2019 - 10:18
Tu peux aussi avoir les infos via ProjetInfo(piRegistre), le hive change selon que l'on soit en mode test ou en mode exécutables.
Les détails sont dans les remarques de ce lien : https://doc.pcsoft.fr/fr-FR/?3064004

--
Il y a peut être plus simple, mais, ça tourne
Mensaje modificado, 10,diciembre 2019 - 10:21
Miembro registrado
119 mensajes
Publicado el 10,diciembre 2019 - 17:03
Voroltinquo a écrit :
Tu peux aussi avoir les infos via ProjetInfo(piRegistre), le hive change selon que l'on soit en mode test ou en mode exécutables.
Les détails sont dans les remarques de ce lien : https://doc.pcsoft.fr/fr-FR/?3064004

--
Il y a peut être plus simple, mais, ça tourne
Message modifié, 10 décembre 2019 - 10:21


C'est parfait, merci, ça va me permettre de récupérer automatiquement le bon hive pour effectuer mes contrôles.

Bon dév.
Miembro registrado
119 mensajes
Publicado el 11,diciembre 2019 - 11:28
Bonjour,

J'ai écrit le code suivant pour connaître les colonnes à afficher ou pas dans ma table :

gsCheminRegistre est une chaîne=ProjetInfo(piRegistre)

UneColonne est un Champ
ResExécute est un booléen
ResLecture est un booléen
sNomcolregistre est une chaîne

// Enumération de toutes les colonnes de la table
POUR nColonne = 1 _À_ TableOccurrence(TABLE_LigneCommande, toColonne)

UneColonne <- TableEnumèreColonne(TABLE_LigneCommande, nColonne)

// Colonne lue
sNomcolregistre=ComplèteRep(gsCheminRegistre)+UneColonne..NomComplet

// Recherche valeur Visible pour la colonne lue
ResLecture= RegistreLit(sNomcolregistre, "VisibleOuverture",ResExécute)

// Si valeur lue correctement
SI ResExécute=Vrai ALORS
SI ResLecture=Faux ALORS
{UneColonne..NomComplet,indChamp}..Visible=Faux
FIN
FIN
FIN


Mais la valeur de ResExécute est toujours à Faux...

Je ne comprends pas car tout existe dans la base de registre ...

Une idée ?

Merci par avance.

Bon dév.

Pampi
Miembro registrado
1.189 mensajes
Publicado el 11,diciembre 2019 - 11:45
La valeur renvoyée par RegistreLit est une chaîne pas un booléen.
A vue de nez le résultat doit donc être "0" ou "1"
En passant par Val(RegistreLit(...)) tu devrait retomber sur tes pieds.

--
Il y a peut être plus simple, mais, ça tourne
Mensaje modificado, 11,diciembre 2019 - 11:56
Miembro registrado
119 mensajes
Publicado el 11,diciembre 2019 - 13:26
Voroltinquo a écrit :
La valeur renvoyée par RegistreLit est une chaîne pas un booléen.
A vue de nez le résultat doit donc être "0" ou "1"
En passant par Val(RegistreLit(...)) tu devrait retomber sur tes pieds.

--
Il y a peut être plus simple, mais, ça tourne
Message modifié, 11 décembre 2019 - 11:56


Merci encore pour ton aide.

Je pense avoir trouvé :

..NomComplet me renvoyait "FEN_FICHE_COMMANDE_CLIENT.TABLE_LigneCommande.COL_IDLigneCde".

Or, si j'utilise RegistreExiste, avec le ...NomComplet, ma colonne n'est pas trouvée.

En remplaçant les "." par des "\" pour obtenir "FEN_FICHE_COMMANDE_CLIENT\TABLE_LigneCommande\COL_IDLigneCde", ça fonctionne :

sNomcolregistre=ComplèteRep(gsCheminRegistre)+Remplace(UneColonne..NomComplet,".","\")
ResLecture= RegistreLit(sNomcolregistre, "VisibleOuverture",ResExécute)


ResExécute est bien à Vrai te je peux récupérer la valeur de ResLecture.

Finalement, mon problème est : pourquoi le "Sélectionner les colonnes" du menu contextuel de ma table :

- fonctionne (met à jour la base de registre) sur ma fenêtre FEN_LISTE_COMMANDE_CLIENT ?
- ne fonctionne pas (ne met pas à jour la base de registre) sur ma fenêtre FEN_FICHE_COMMANDE_CLIENT ?

sachant les que les 2 tables sont alimentées par programmation.

Pour info, la copie de code entre les balises [ code:wl ] et [ /code ] sur ce forum ne fonctionne plus chez nous...

Merci encore pour ton aide.

Bon dév.

Pampi
Miembro registrado
119 mensajes
Publicado el 11,diciembre 2019 - 13:44
Tout ça pour ça...

Il suffisait en fait de cocher "Mémoriser la config. des colonnes" pour que le "Sélectionner les colonnes" fonctionne et écrive dans la base des registres..