Click sur un header de MsHflexGrid

Résolu
cs_maloue Messages postés 13 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 21 décembre 2010 - 3 avril 2007 à 09:27
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 4 avril 2007 à 22:11
Bonjour à tous ,

J'ai un petit souci avec les Clicks sur un header de MsHflexGrid, je n'arive pa à déterminé si un click à été effectué sur header de MsHflexGrid (pour lancer en suite un tri sur la clonne de cette grille).

Si vous avez l'explication merci pour votre réponse

9 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 avril 2007 à 11:51
Plutôt que d'utiliser ColHeader, essaie avec FormatString

ex:
MSHFlexGrid1.FormatString = "< Client1       |^Client 2       |> Client3       "

Le caractère "pipe" ( | ) indique l'emplacement des colonnes
Les caractères suivants servent à la justification du texte
<   alignement à gauche
>   à droite
^   centré

Les espaces après le mot ajusteront la largeur de cette colonne

Renfield,
c'est effectivement plus clair à lire. Encore faut-il savoir que ces constantes existent et aussi se débarrasser de ses vieilles habitudes (ça c'est le plus difficile...)

MPi
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
3 avril 2007 à 12:06
Dans MouseUp (ou MouseDown), vérifie si la valeur de Y est plus grande que 0 et plus petite que la hauteur de la première ligne

MPi
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 avril 2007 à 12:34
MouseCol et MouseRow te renvoient la colonne et la ligne de la cellule survollée...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_maloue Messages postés 13 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 21 décembre 2010
3 avril 2007 à 14:49
Merci pour la réponse,
celle ci m'a fait progressé mais maintenant lorsque je click pour lancer le tri par

If x > 9269 And x < 10140 And y > 14 And y < 211 Then
    MSHFlexGrid1.Col = 6
    MSHFlexGrid1.Sort = 1
End If

J'ai l'erreur suivante : La méthode Sort de l'objet IMSHFlexGrid a échoué !

si vous pouviez éclairer ma lanterne ?

Merci
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 avril 2007 à 18:39
pas terribles, ces valeurs en dur....
renommes pas d'entete, ne change pas de police, etc....

sinon il te faudra recalibrer.

je suppose que tu voulais dire

MSHFlexGrid1.Sort = flexSortGenericAscending

... sinon, j'ignore pourquoi ca coince.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 avril 2007 à 00:38
Voici un exemple simple.
Le If permet de trier Ascendant et/ou Descendant

Private Sub Grid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    Static Flag As Integer
   
    If Button = 1 And y <= 250 Then
        If Flag <> 1 Then
            Flag = 1
        Else
            Flag = 2
        End If  
       
        Grid1.Sort = Flag
       
    End If
End Sub

Plutôt que de mettre 250 comme valeur, tu pourrais utiliser Grid1.RowHeightMin en autant que tu aies déclaré une valeur dans les propriétés de la grille ou dans le code.

MPi
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 avril 2007 à 00:56
faché avec les constantes et les enums ?

c'est pourtant plus simple, pour comprendre, certaines fois...

J'ai repris ton code, en utilisant les constantes, dont tu utilisais les valeurs en dur :

Private Sub Grid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Static Flag As MSHierarchicalFlexGridLib.SortSettings
   
   If Button = vbLeftButton And y <= 250 Then
       If Flag <> flexSortGenericAscending Then
           Flag = flexSortGenericAscending
       Else
           Flag = flexSortGenericDescending
       End If
       
       Grid1.Sort = Flag
   End If
End Sub , ----
By Renfield

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_maloue Messages postés 13 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 21 décembre 2010
4 avril 2007 à 08:56
Merci pour votre réponse, qui permet d'amélorer la lecture de mon  code.

Le problème est toujours le même et ceci depuis que j'ai mis en place les ColHeaderCaption pour mettre des titres à mes colonnes.

    MSHFlexGrid1.ColHeaderCaption(0, 1) = "Client"
    MSHFlexGrid1.ColWidth(1) = 3000
    MSHFlexGrid1.ColAlignment(1) = 6

sans les titres (ColHeaderCaption ) le tri fonctionne !
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 avril 2007 à 22:11
F2 (explorateur d'objet)
avec un peu de chance et d'intuition, on retombe sur ces pieds....

d'accord avec le fait que cela ne change rien a la donne, mais de savoir que le tri croissant vaut 1 ne m'apporte que peu de chose... ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous