[R] Sauvegarder l'ordre de tri d'une colonne

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

[R] Sauvegarder l'ordre de tri d'une colonne

#1

Message par jpascal »

Bonjour,

Je sauvegarde la colonne qui est utilisée pour trier les données de ma listview avec ce code dans la fonction WM_NOTIFY :
   Switch $iIDFrom
      Case $idListview
         Switch $iCode
            Case $LVN_COLUMNCLICK
               $tInfo = DllStructCreate($tagNMLISTVIEW, $lParam)
               _GUICtrlListView_SortItems($iIDFrom, DllStructGetData($tInfo, "SubItem"))
               RegWrite($g_sRegKeyApp, 'Order', 'REG_SZ', DllStructGetData($tInfo, "SubItem"))
               ; No return value
         EndSwitch
...

Est-il possible de sauvegarder également l'ordre de tri (ascendant/descendant) ?
Modifié en dernier par jpascal le mer. 14 août 2024 09:28, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 137
Enregistré le : ven. 17 avr. 2020 01:23
Localisation : Montréal, Québec
Status : Hors ligne

Re: [..] Sauvegarder l'ordre de tri d'une colonne

#2

Message par Nine »

Ajoute ces lignes après le sort :

Code : Tout sélectionner

          $hHeader = _GUICtrlListView_GetHeader($hWndFrom)
          $iFormat = _GUICtrlHeader_GetItemFormat($hHeader, DllStructGetData($tInfo, "SubItem"))
          If BitAND($iFormat, $HDF_SORTDOWN) Then ConsoleWrite("Down" & @CRLF)
          If BitAND($iFormat, $HDF_SORTUP) Then ConsoleWrite("Up" & @CRLF)
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Sauvegarder l'ordre de tri d'une colonne

#3

Message par jpascal »

Merci Monsieur Nine :)

Pour ceux que ça intéresse, voici le code induit par cette modif :

Dans WM_NOTIFY() :
Switch $iCode
            Case $LVN_COLUMNCLICK
               $tInfo = DllStructCreate($tagNMLISTVIEW, $lParam)
               Switch DllStructGetData($tInfo, "SubItem")
                     _GUICtrlListView_SortItems($iIDFrom, DllStructGetData($tInfo, "SubItem"))
                     RegWrite($g_sRegKeyApp, 'Order', 'REG_SZ', DllStructGetData($tInfo, "SubItem"))
                     Local $hHeader = _GUICtrlListView_GetHeader($iIDFrom)
                     Local $iFormat = _GUICtrlHeader_GetItemFormat($hHeader, DllStructGetData($tInfo, "SubItem"))
                     RegWrite($g_sRegKeyApp, 'Descending', 'REG_DWORD', BitAND($iFormat, $HDF_SORTDOWN) ? 1 : 0)

Et lors du démarrage de l'appli :
   Local $iOrder = RegRead($g_sRegKeyApp, 'Order')
   If @error Then $iOrder = 3 ; colonne triée par défaut
   Local $iDescending = RegRead($g_sRegKeyApp, 'Descending')
   If @error Then $iDescending = 0
...
; Récupération de données dans $aData
...
   _ArraySort($aData, $iDescending, 0, 0, $iOrder); tri des données
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre