|
TableColonnesTriées |
|
ChefDeProjet WDF
Inscrit: 29/05/2007 17:03
De Sassenage
Post(s): 180
|
Bonjour,
j'effectue une trie multiple sur une table en maintenant la bouton shift enfoncé et cliquant sur mes entete de colonnes, mais la fonction TableColonnesTriées ne me renvoie que le nom de la derniere colonne cliqué, alors qu'elle devrait me renvoyer le nom des entete intervenant dans le trie séparés par TAB, quelqu'un a-t-il une solution?
Merci.
Contribution le : 12/12/2008 17:15
|
|
|
Re: TableColonnesTriées |
|
ChefDeProjet WDF
Inscrit: 29/05/2007 17:03
De Sassenage
Post(s): 180
|
D'autres personne ayant installé la pré-version de la 14 ont le même comportement, donc il ne semble pas y avoir de solution "native" à ce problème.
Contribution le : 15/12/2008 09:32
|
|
|
Re: TableColonnesTriées |
|
ChefDeProjet WDF
Inscrit: 29/05/2007 17:03
De Sassenage
Post(s): 180
|
Bon, comme on est jamais mieux servie que par soit meme, j'ai fait un petit bout de code pour gerer ce truc, voici donc: Déclaration globale de votre fenetre:
sListeColonneTrie est une chaîne //Liste des colonne de trie de la table des entetes
Evénement("Ma_Procedure",Matable..Nom, 1529)
Ma_procedure
PROCEDURE Ma_Procedure()
iIndice est un entier = 1
sChaine est une chaîne
sRecuperationLibelle est une chaîne
//récuperation de l'indice de la colonne
iNumColonne est un entier système = _EVE.wParam
//on remet les libellés des colonnes comme à l'origine, ils seront remis a jour a la fin de la procedure
sChaine = ExtraitChaîne(sListeColonneTrie,iIndice)
TANTQUE sChaine<>EOT _ET_ sListeColonneTrie<>""
RecuperationLibelle = ExtraitChaîne({Droite(sChaine,Taille(sChaine)-1),indChamp}[0]..Libellé,2,"]")
{Droite(sChaine,Taille(sChaine)-1),indChamp}[0]..Libellé = sRecuperationLibelle //ExtraitChaîne({droite(sChaine,Taille(sChaine)-1),indChamp}[0]..Libellé,2,"[")
iIndice++
sChaine = ExtraitChaîne(sListeColonneTrie,iIndice)
FIN
//récupération du nom de la colonne
sNomColonne est une chaîne = "TABLE_HEADER."+TableEnumèreColonne(TABLE_HEADER,iNumColonne)
//test si on ajoute un non une nouvelle colonne de trie
SI PAS ToucheEnfoncée(teShift) _ET_ (...
(PAS ChaîneOccurrence(sListeColonneTrie,TAB) _ET_ sNomColonne <> sListeColonneTrie) _OU_ ChaîneOccurrence(sListeColonneTrie,TAB)) ALORS
sListeColonneTrie = "" //on vide la liste des colonne si on a pas appuyé sur shift //trace("shift enfoncée")
FIN
//ajout du nom de la colonne dans la liste de trie
sListeColonneTrie = Remplace(sListeColonneTrie,"_","è") //a cause de position qui fait n'importe quoi sur les séparateur, pour lui "_" est un caractère de ponctuation!!!!
sNomColonne = Remplace(sNomColonne,"_","è")
iPositionChaine est un entier = Position(sListeColonneTrie,sNomColonne,0, DepuisDébut+MotComplet)
//si on ne l'as pas trouvé, on l'ajoute, sinon on annule le sens de trie
SI iPositionChaine = 0 ALORS
SI sListeColonneTrie <>"" ALORS
sListeColonneTrie+=TAB
FIN
sListeColonneTrie+="+"+sNomColonne
SINON
//on inverse le signe de trie
sListeColonneTrie = sListeColonneTrie[[A (iPositionChaine-2)]]+Gp_Viif(sListeColonneTrie[[(iPositionChaine-1) A (iPositionChaine-1)]] = "+", "-", "+")+...
sListeColonneTrie[[(iPositionChaine) A]]
FIN
//on remet la chaine correctement
sListeColonneTrie = Remplace(sListeColonneTrie,"è","_") //a cause de position qui fait n'importe quoi sur les séparateur, pour lui "_" est un caractère de ponctuation!!!!
//mise a jour des libellés des colonnes
iIndice = 1
sChaine = ExtraitChaîne(sListeColonneTrie,iIndice)
TANTQUE sChaine<>EOT
SI PAS ChaîneOccurrence({Droite(sChaine,Taille(sChaine)-1),indChamp}[0]..Libellé,"]") ALORS
sRecuperationLibelle = {Droite(sChaine,Taille(sChaine)-1),indChamp}[0]..Libellé
SINON
sRecuperationLibelle = ExtraitChaîne({Droite(sChaine,Taille(sChaine)-1),indChamp}[0]..Libellé,2,"]")
FIN
{Droite(sChaine,Taille(sChaine)-1),indChamp}[0]..Libellé = ...
"["+Gauche(sChaine,1)+iIndice+"]"+ sRecuperationLibelle //ExtraitChaîne({droite(sChaine,Taille(sChaine)-1),indChamp}[0]..Libellé,2,"[")
iIndice++
sChaine = ExtraitChaîne(sListeColonneTrie,iIndice)
FIN
TableTrie(sListeColonneTrie)
//on annule le trie automatique vu que c'est nous qui le faisons
RENVOYER Faux
Pour info, il faut remplacer le bout de code GP_VIIF par la syntaxe conditionnelle avec le ? (voir l'aide de windev). Normalement, ca doit marcher, si vous y trouvé des bugs, faites un retour ici, merci d'avance PS: Correctif sur la gestion de la touche Shift
Contribution le : 15/12/2008 11:59
Edité par Asthroth sur 15/12/2008 12:31:05
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|