Visualisation d'une icône 'Tri' à partir d'un FlexGrid

cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 - 24 avril 2007 à 10:42
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 25 avril 2007 à 00:31
Bonjour,

j'utilise le composant Flexgrid avec sa propriété TRI (sort) dans mon application.

Le tri (croissant ou decroissant) s'effectue lorsque l'on click sur l'entête d'une colonne.

Malheureusement, je n'arrive pas à indiquer à l'utilisateur le sens du tri.
J'aurai aimé utiliser la même gestion que l'explorateur windows.
C'est à dire, la flèche descendante ou ascendante à côté du nom de l'entête de colonne.

Y aurait t'il moyen d'utiliser ces flèches dans vb ?

Merci d'avance pour toute votre aide,

6 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
24 avril 2007 à 12:14
Bonjour,

Si tu veux en plus donner le chois du sens du tri à l'utilisateur tout en lui permettant de ne cliquer que sur la flêche de son choix (sans avoir à choisir à cliquer en plus sur la colonne à trier), c'est toi qui n'as pas le choix :

Il te faut :

mettre dans une Frame étroite audessus de ta Flexgrid un groupe indexé de flêches montantes et un groupe indexé de flêches descendantes (chacune dans un label)
Pour dessiner tes flêches, utilise tout bêtement la police Windinds (par exemple)
l'index à donner à chaque flêche dans chacun des deux groupes doit correspondre à la colonne au-dessus de laquelle figure la flêche en cause
Que te reste-t-il à faire ? tout simplement affecter au click de l'un de ces labels le code de tri correpondant, en utilisant :
 l'index du label (qui spécifie donc celui de la colonne comme exposé ci-dessu)

celà se traduira donc par deux codes de tri (un si choisi dans l groupe "montant et un si choisi dans le groupe descendant)

Maintenant, si tu es plus astucieux, tu peux n'utiliser qu'un seul groupe où les index terminés par 0 entraînent un tri ascendant et ceux terminés par un 1 un tri descendant
en donnant comme index, par exemple, le N° de la colonne suivi de 1 ou 0
ainsi, par exemple, au dessus de la colonne 2 : un label indexé 20 et un label indexé 21
au click :
left(index,1) te donne le n° de la colonne
et
right(index,1) te fais savoir si tu envoies le code descendant ou montant

Fais joujou avec çà... (c'est assez facile)
0
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
24 avril 2007 à 13:16
merci beaucoup pour ton aide jmf !!!

par contre je ne souhaite pas modifier la gestion du tri.
A savoir : un click inverti le sens du tri.

sachant donc dans quel tri je suis (ascendant ou descendant), à l'aide d'un booléen,
comment retranscrire cette information à l'utilisateur ???

par exemple :

aucun click              :      Nom     Prénom         Adresse
un click sur prénom :      Nom     Prénom r    Adresse
un click sur prénom :      Nom     Prénom s    Adresse
un click sur adresse :      Nom     Prénom         Adresse r

je ne sais, malheureusement pas comment insérer cette police (Wingdings) dans l'entête du flexgrid à côté du nom de la colonne...

merci beaucoup,
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
24 avril 2007 à 13:21
Ce n'est pas dans l'entête du flexgrid que tu peux utiliser valablement cette police !
Car tout seraiut alors écrit dans cette police et donc carrément ilisible !:
C'est comme je te l'ai dit : séparément, au dessus, dans un cadre... dans lequel tu insères tes labels en leur affectant cette police (propriété font) ...
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
24 avril 2007 à 15:05
bonjour,
euhhh, je vois pas de pb pour indiquer à l'utilisateur dans quel sens le tri est fait.
Dans un flexgrid il y a moyen de mettre une image, avec alignement,
Ne pourrait-on changer d'image ou icone a chaque click sur l'entête pour mettre un BMP nflêche haut ou flêche bas ?
A moins que je confonde avec MSHflexgrid.
a+
louis
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
24 avril 2007 à 15:38
pour information, j'utilise le mshflexgrid !

je sais renseigner l'entête à partir d'une zone texte et également à partir d'une icône :

   Set Flex.CellPicture = Icone.Picture

par contre, peut on mixer les deux ? texte + icône...

Merci beaucoup !!!

ps : si quelqu'un peut me récup le code de l'explorateur windows, je suis preneur :-)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 avril 2007 à 00:31
Mais l'explorateur Windows n'est pas fait avec une flexgrid... c'est là le problème...
C'est une ListView

Il te faut donc bidouiller si tu tiens à utiliser la FlexGrid. Et on t'a déjà donné au moins 2 méthodes de bidouillage...

MPi
0
Rejoignez-nous