PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Désactiver la mémorisation de la position des colonnes
Désactiver la mémorisation de la position des colonnes
Iniciado por TheCout, ago., 07 2020 10:48 AM - 8 respostas
Membro registado
93 mensagems
Popularité : +1 (1 vote)
Publicado em agosto, 07 2020 - 10:48 AM
Bonjour est-il posssible, par code, d'empêcher la mémorisation des colonnes.

En effet, par code je déplace des colonnes pour en mettre certaines en évidence dans un certain contexte mais, à la sortie de la fenêtre, le nouvel emplacement est mémorisé, ce que je ne voudrais pas.
Membro registado
213 mensagems
Popularité : +12 (12 votes)
Publicado em agosto, 08 2020 - 5:44 AM
Bonsoir,

Regarde du côté de FAADésactive.
https://doc.pcsoft.fr/fr-FR/?1000022018

Serge

--
-----
Parfois, la logique est implacable...
Membro registado
93 mensagems
Popularité : +1 (1 vote)
Publicado em agosto, 10 2020 - 11:54 AM
J'avais pensé à ça aussi mais malheureusement il n'y a pas.

Du coup, j'ai fait la méthode bourrin mais qui, dans le contexte qui m'intéresse, me convient:
. sauvegarde via regedit.exe des mémorisations utilisateur relatif à la fenêtre dans un fichier .reg
. ouverture de la fenêtre en question
. réapplication du .reg précédemment sauvegardé

v_chn_CheminRegistreSauveInfoFenetre est une chaîne = ProjetInfo(piRegistre) + "\Comptoir_Consult_Doc"
v_chn_NomFicSauv est une chaîne = fFichierTemp("")

//sauvegarde les infos de config de la fenêtre
LanceAppli("regedit.exe /e """ + v_chn_NomFicSauv + """ """ + v_chn_CheminRegistreSauveInfoFenetre + """",exeInactif+exeIconise,exeBloquant)

Ouvre(Comptoir_Consult_Doc,*,*,*,*,*,*,v_chn_CriteresOuvertureConsultDoc)

//restitue les infos de config de la fenêtre précédemment sauvegardées
LanceAppli("regedit.exe /s """ + v_chn_NomFicSauv + """",exeInactif+exeIconise,exeBloquant)
Membro registado
3.845 mensagems
Popularité : +227 (347 votes)
Publicado em agosto, 10 2020 - 12:41 PM
Bonjour
En moins bourrin, il y a SauveParamètre/Charge paramètre
On sauvegarde l'état à l'ouverture, on restaure à la fermeture. Plus de .reg qui traînent

--
Il y a peut être plus simple, mais, ça tourne
Membro registado
3.845 mensagems
Popularité : +227 (347 votes)
Publicado em agosto, 10 2020 - 1:20 PM
Une autre solution est de décocher la case "Mémoriser la config. des colonnes" dans Paramètres/Détail/Paramètre des colonnes.
Ou alors :
sHiveTable est chaîne

sHiveTable=ChaîneConstruit("%1\FEN_MaFenetre\TABLE_MaTable",ProjetInfo(piRegistre))
RegistreSupprimeClé(sHiveTable)


--
Il y a peut être plus simple, mais, ça tourne
Membro registado
93 mensagems
Popularité : +1 (1 vote)
Publicado em agosto, 10 2020 - 2:22 PM
Tu pourrais expliquer ou fournir un bout de code avec SauveParamètre/ChargeParamètre ? J'avais lu l'aide de cette fonction mais je n'ai rien compris.

De plus, ta proposition sHiveTable=ChaineConstruit("%1\FEN_MaFenetre\TABLE_MaTable",ProjetInfo(piRegistre))
RegistreSupprimeClé(sHiveTable) va supprimer les personnalisations faites par l'utilisateur dans un contexte "normal". Pas cool.
Membro registado
3.845 mensagems
Popularité : +227 (347 votes)
Publicado em agosto, 10 2020 - 11:49 PM
TheCout a écrit :
De plus, ta proposition sHiveTable=ChaineConstruit("%1\FEN_MaFenetre\TABLE_MaTable",ProjetInfo(piRegistre))
RegistreSupprimeClé(sHiveTable) va supprimer les personnalisations faites par l'utilisateur dans un contexte "normal". Pas cool.

Cela correspond pourtant à l'intitulé du post "Désactiver la mémorisation de la position des colonnes"
En ce qui concerne Sauve/Charge paramètre, on va se baser sur la structure suivante :
STParamColonne est structure
m_sNomColonne est une chaîne
m_nPositionColonne est entier
m_nLargeurColonne est un entier
FIN

Après, ce n'est pas exhaustiif, seuls les 2 premiers membres sont nécessaires.

En ce qui concerne la sauvegarde
//Profil est le nom de la clé dans le hive de sauvegarde, il peut le cas échéant servir à gérer les ...profils
Procedure TableSauveParamètres(chTableConcernée est Champ,sProfil est chaîne="Nominal")
bufParamètres est Buffer
sHiveSauvegarde est une chaîne

//On crée un hive, pour faire propre on peut s'en passer, tout sera alors sauvegardé dans le hive de l'appli
sHiveSauvegarde=ChaîneConstruit("%1\ParamètreTable",ProjetInfo(piRegistre))
InitParamètre(paramRegistre,sHiveSauvegarde)

bufParamètres=SauverEtatColonnes(chTableConcernée)
SauveParamètre(sProfil,bufParamètres)
//On revient au hive par défaut
InitParamètre(paramRegistre,ProjetInfo(piRegistre))


FONCTION SauverEtatColonnes(chMaTable est Champ) : Buffer
stColEnCours est STParamColonne
tabParamTable est tableau de STParamColonne //Tableau dans lequel seront stockés les réglages
nNbColonne est un entier
nNoCol est entier
bufParamètres est Buffer //Résultat de la sérialisation

nNbColonne=TableOccurrence(chMaTable,toColonne)
POUR nNoCol=1 À nNbColonne
stColEnCours=RécupèreCol(nNoCol)
TableauAjoute(tabParamTable,stColEnCours)
FIN
Sérialise(tabParamTable,bufParamètres,psdXML)

RENVOYER bufParamètres


FONCTION RécupèreCol(nIndice est entier):STParamColonne
stColTravail est STParamColonne
chChampCol est Champ

chChampCol<-TableEnumèreColonne(TABLE_MaTable,nIndice)

stColTravail:m_sNomColonne=chChampCol..Nom
stColTravail:m_nPositionColonne=nIndice
stColTravail:m_nLargeurColonne=chChampCol..Largeur

RENVOYER stColTravail


Pour restaurer l'état initial ou pour appliquer un profil il suffit de faire la manip inverse
Procedure TableChargeParametre(chMaTable est Champ,sProfil est chaîne="Nominal")
bufParametres est Buffer
sHiveSauvegarde est une chaîne
tabParamètresColonnes est tableau de STParamColonne

sHiveSauvegarde=ChaîneConstruit("%1\ParamètreTable",ProjetInfo(piRegistre))
InitParamètre(paramRegistre,sHiveSauvegarde)

bufParametres=ChargeParamètre(sProfil)
Désérialise(tabParamètresColonnes,bufParametres,psdXML)
RestaureEtatColonne(chMaTable,tabParamètresColonnes)

InitParamètre(paramRegistre,ProjetInfo(piRegistre))


Procedure RestaureEtatColonne(chTable est Champ,tabEtatDésiré est tableau de STParamColonne)
stColonneConcernée est STParamColonne

POUR TOUT stColonneConcernée de tabEtatDésiré
RestaureColonne(chTable,stColonneConcernée)
FIN


Procedure RestaureColonne(chMatable est Champ,stMaColonne est STParamColonne)
chColonne est Champ

chColonne<-{stMaColonne:m_sNomColonne,indChamp}
TableDéplaceColonne(chMatable,stMaColonne:m_sNomColonne,stMaColonne:m_nPositionColonne)
chColonne..Largeur=stMaColonne:m_nLargeurColonne


Il n'y a plus que les CAS ERREUR, CAS EXCEPTION à traiter.

Lorsqu'on est en présence de fonction qui manipulent des structures, on n'est pas loin de la POO, après, c'est un choix de développement.

--
Il y a peut être plus simple, mais, ça tourne
Membro registado
93 mensagems
Popularité : +1 (1 vote)
Publicado em agosto, 11 2020 - 9:34 AM
Merci Voroltinquo pour ton post très intéressant.

Effectivement mon post initial était incomplet : dans le cas d'ouverture "normal" de la fenêtre, je veux que les configs des colonnes modifiées par l'utilisateur soient mémorisées normalement.

Par contre, quand j'ouvre cette fenêtre avec certains paramètres, je déplace les colonnes par programmation et là je ne veux pas que cette nouvelle config de colonne soit mémorisée.

Donc, je retiens quand même ton code mais avec mon regedit.exe pour sauvegarder avant puis restituer après.

sHiveTable=ChaineConstruit("%1\FEN_MaFenetre\TABLE_MaTable",ProjetInfo(piRegistre))
RegistreSupprimeClé(sHiveTable)

Par contre, je pensais que SauveParametre et ChargeParametre permettait justement de sauvegarder certaines infos spécifiques propre à un champ, sans "programmation", en ce sens que le contenu à sauver pourrait être justement certains paramètres de la table. Je ne suis pas sûr d'être très clair.
Membro registado
3.845 mensagems
Popularité : +227 (347 votes)
Publicado em agosto, 11 2020 - 10:20 AM
SauveParamètre/ChargeParamètre a (ont) pour but
1-De "remplacer" la case à cocher "Memoriser la valeur du champ"
2-D'avoir des variables "persistantes" telles que les données de connexion par exemple, les options sélectionnées, la numérotation des fichier par défaut lors de la création de document, la numérisation (e.g. MaNumerisation12.PDF) pour éviter d'écraser les fichier précédemment créés et ce sans avoir à utiliser les fonction RegistreXXX. cf https://doc.pcsoft.fr/?9000019

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