|
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 |
| |
| |
| | | |
|
| | |
| |
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("")
LanceAppli("regedit.exe /e """ + v_chn_NomFicSauv + """ """ + v_chn_CheminRegistreSauveInfoFenetre + """",exeInactif+exeIconise,exeBloquant)
Ouvre(Comptoir_Consult_Doc,*,*,*,*,*,*,v_chn_CriteresOuvertureConsultDoc)
LanceAppli("regedit.exe /s """ + v_chn_NomFicSauv + """",exeInactif+exeIconise,exeBloquant) |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.891 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.891 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.891 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
Procedure TableSauveParamètres(chTableConcernée est Champ,sProfil est chaîne="Nominal") bufParamètres est Buffer sHiveSauvegarde est une chaîne
sHiveSauvegarde=ChaîneConstruit("%1\ParamètreTable",ProjetInfo(piRegistre)) InitParamètre(paramRegistre,sHiveSauvegarde)
bufParamètres=SauverEtatColonnes(chTableConcernée) SauveParamètre(sProfil,bufParamètres)
InitParamètre(paramRegistre,ProjetInfo(piRegistre))
FONCTION SauverEtatColonnes(chMaTable est Champ) : Buffer stColEnCours est STParamColonne tabParamTable est tableau de STParamColonne nNbColonne est un entier nNoCol est entier bufParamètres est Buffer
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.891 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 |
| |
| |
| | | |
|
| | | | |
| | |
|