PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2025 → Restaurer l'ordre des colonnes par défaut d'un champ table.
Restaurer l'ordre des colonnes par défaut d'un champ table.
Started by obtuli, Feb., 22 2024 3:03 PM - 9 replies
Registered member
961 messages
Posted on February, 22 2024 - 3:03 PM
Bonjour,

Comment est-il possible de restaurer l'ordre de colonnes par défaut quand un utilisateur a déplacé des colonnes manuellement un peu dans tous les sens ?

merci

OB

ps : question annexe, sur un poste utilisateur, quand l'ordre des colonnes d'une table est modifié, cet ordre n'est pas conservé
et quand la fenêtre est à nouveau ouverte, l'ordre est perdu (ça marche pour les autres utilisateurs) et pour cet utilisateur, ça marche très bien dans d'autres fenêtres) ... ??! une idée ?
Registered member
491 messages
Posted on February, 22 2024 - 4:15 PM
Bonjour

Pour sauvegarder les "préférences" utilisateurs j'avais le même souci cela fonctionnait pour certains postes et d'autre postes non, sans savoir pourquoi !
Désormais dans mon code de projet j'utilise ce code et depuis que je fais cela je n'ai plus de problème :

https://doc.pcsoft.fr/?3025044&lang=fr-FR&productversion=xxF270104h

//===============Récupération des paramètres d'affichage par utilisateur =====================
SI PAS fRépertoireExiste(ComplèteRep(Repertoire_base) + "Parametres\") ALORS
fRepCrée(ComplèteRep(Repertoire_base) + "Parametres\")
FIN

QUAND EXCEPTIONEXCEPTION DANS
InitParamètre(paramXML,ComplèteRep(Repertoire_base) + "Parametres\Param_" + xVarUserLogin + ".xml")
FAIRE
SI ExceptionInfo(errCode) = "80703" ALORS
//ecriture dans le fichier de log
fAjouteTexte(Fichier_Log,"XML Paramètre : Erreur du fichier de paramètre XML de " + xVarUserLogin + " le " + DateVersChaîne(DateSys, "JJMMAAAA") + RC)
// traitement de suppression
fSupprime(ComplèteRep(Repertoire_base) + "Parametres\Param_" + xVarUserLogin + ".xml")
fSupprime(ComplèteRep(Repertoire_base) + "Parametres\Param_" + xVarUserLogin + ".bak")
SINON
ExceptionPropage()
FIN
FIN


donc, en cas de besoin de faire un reset de l'interface :
- je ferme l'app du coté utilisateur
- je supprime le fichier xml de l'utilisateur
- on relance et l'interface revient à son origine


Pour info en utilisant le "initparametre", le "sauveparamètre" sauvegarde les valeurs en plus dans le fichiers xml crée au dessus.
Alors que si on ne précise pas avec un "initparamètre", windev sauvegarde cela dans la base des registre.


De plus, sur des écrans où je veux absolument que des préférences spécifiques soient sauvegardé je fais comme cela :


à la fermeture de la fenêtre
https://doc.pcsoft.fr/?3025046

//sauvegarde de la taille et la hauteur du texte de la table composant afin de mémoriser le choix de l'utilisateur
SauveParamètre("TailleTexte",TABLE_Composant..Police..Taille)
SauveParamètre("HauteurTexte",TABLE_Composant..HauteurLigne )



à l'ouverture
https://doc.pcsoft.fr/?3025047&name=chargeparametre_fonction

TABLE_Composant..Police..Taille = ChargeParamètre("TailleTexte",8)
TABLE_Composant..HauteurLigne = ChargeParamètre("HauteurTexte",18)



cordialement

DG
Message modified, February, 22 2024 - 4:23 PM
Posted on February, 23 2024 - 8:39 AM
Bonjour

Egalement j'ai le même souci, sachant que dans le détail de champ table je croche l'option "Mémorise la config. des colonnes"

Dans mon code init projet(),je met le code ci dessous
InitParamètre(paramXML,ComplèteRep(ComplèteRep(fRepExe()) ) + "ParamUSERS\Param_" + User + ".xml")


L'utilisateur veut modifier la largeur de quelques colonnes
Veut aussi masquer et déplacer quelques colonnes

Dans chaque fermeture de la fenêtre, je sauvegarde les préférences user sur table
SauveParamètre("HeuteurLigne",Table..HauteurLigne)
SauveParamètre("LargeurLigne",Table..Largeur )


A l'ouverture de la fenêtre
Table..Largeur = ChargeParamètre("LargeurLigne")
Table..HauteurLigne = ChargeParamètre("HeuteurLigne")


mais ca n'a pas marchait
Autre question
Quelles sont les propriétés qui permet de masquer/afficher colonnes de la table et la propriété de déplacer des colonnes ?

Merci de vérifier mon code
Registered member
151 messages
Posted on February, 23 2024 - 9:22 AM
Bonjour,

pour masquer/afficher une colonne c'est la propriété visible Vrai/Faux et pour déplacer c'est la propriété Déplaçable.
Posted on February, 23 2024 - 10:11 AM
Merci Silverin

Oui je sais , mais comment on les gères dans la fonction SauveParamètre et ChargeParamètre ?
Registered member
491 messages
Posted on February, 23 2024 - 2:22 PM
bonjour,

avec un tableneumerecolonne ce qui va permettre de connaitre le nom des colonnes et de les sauvegarder et ensuite re parcourir la sauvegarde et appliquer un tabledeplacecolonne

https://doc.pcsoft.fr/?3074012
https://doc.pcsoft.fr/?3074011&name=tabledeplacecolonne_fonction
Message modified, February, 23 2024 - 2:23 PM
Registered member
277 messages
Posted on February, 23 2024 - 4:14 PM
obtuli a écrit :
Bonjour,

Comment est-il possible de restaurer l'ordre de colonnes par défaut quand un utilisateur a déplacé des colonnes manuellement un peu dans tous les sens ?

merci

OB

ps : question annexe, sur un poste utilisateur, quand l'ordre des colonnes d'une table est modifié, cet ordre n'est pas conservé
et quand la fenêtre est à nouveau ouverte, l'ordre est perdu (ça marche pour les autres utilisateurs) et pour cet utilisateur, ça marche très bien dans d'autres fenêtres) ... ??! une idée ?



Bonjour,

Moi je procède comme ça :

Je place le code suivant dans le bouton qui va ouvrir la fenêtre dans laquelle il y a la ou les tables qui ont besoin de retrouver leur valeurs par défaut.
Et bien sûr je mets une info bulle sur ce bouton du genre :
***********
Vous pouvez réinitialiser la structure originale des tables
appelées derrière ce bouton, en maintenant la touche [Majus]
enfoncée pendant que vous cliquez sur ce dernier.
************
SI ToucheEnfoncée(teShift) ALORS

// Ré-afficher la table avec les valeurs par défaut
RegistreSupprimeClé("HKEY_CURRENT_USER\SOFTWARE\<Nom_du_groupe_install>\<Nom_du_logiciel>\<FEN_Nom_de_la_fenêtre_concernée\TABLE_Nom_de_la_table_concernée")
// idem pour les autres tables concernées de cette fenêtre
FIN

Ouvre(FEN_Nom_de_la_fenêtre_concernée)


A noter toutefois que ce code ne fonctionnera en mode TEST car le chemin de la clé est différent.
Mais il fonctionnera depuis l'exécutable.

Pour la question annexe, comme ça se passe dans la base de registre, il y a peut être un problème de droit ? à voir...
Au pire éditez la BDR et supprimez la clé suivante :
"HKEY_CURRENT_USER\SOFTWARE\<Nom_du_groupe_install>\<Nom_du_logiciel>\"

Et si ça ne marche toujours pas essayez à nouveau après avoir créé une nouvelle session utilisateur.
Registered member
4,361 messages
Posted on February, 23 2024 - 5:59 PM
Bonjour,
Tu peux facilement avoir accès (même en mode test) à
HKEY_CURRENT_USER\SOFTWARE\<Nom_du_groupe_install>\<Nom_du_logiciel>

via ProjetInfo
Dans le cas d'un bouton ou d'une procédure locale, le code devient
saRacine est chaîne

saRacine=ProjetInfo(piRegistre)

....
RegistreSupprimeClé(ChaîneConstruit("%1%2\TABLE_MaTable",ComplèteRep(ProjetInfo(piRegistre)),MonParent..Nom)
...


--
Il y a peut être plus simple, mais, ça tourne
Registered member
961 messages
Posted on February, 23 2024 - 8:15 PM
Bonjour,

Merci pour vos retours, la gestion des registres semble très bien. Il faudrait dans les faa, la possibilité de réinitialiser totalement la fenêtre ( en plus de sa taille et de sa position)
Registered member
4,361 messages
Posted on February, 24 2024 - 11:30 AM
obtuli a écrit :
Il faudrait dans les faa, la possibilité de réinitialiser totalement la fenêtre

Il suffit d'ajouter un menu contextuel aux FAA

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