Page 1 sur 1

Barre de Recherche&Bouton dans une listview

Posté : mer. 26 févr. 2020 12:42
par Doctox
Bonjour tout le monde,

J'ai farfouillé a droite a gauche, et j'ai trouvé des résultats que j'ai du mal a comprendre car très compliqué. Je me demandais si vous aviez pas des pistes plus simple que de passer par DllStructCreate and Co.

Comme le titre l'indique j'aimerais faire une recherche dans ma listview remplit pour afficher dans une listview vide a coté.

Mais j'aimerais qu'il m'affiche l'item complet et pas juste le string trouvé.

Malheureusement je suis toujours aussi nul même après avoir passer des journées entière sur Autoit. A force de recherche j'ai trouvé un bout de code (que je comprend =D) mais je n'arrive pas a le moduler comme voulu, surement car il n'est pas fait pour faire ce que je veux mais sa s'en rapproche.



$ListCommande = GUICtrlCreateListView($columns, 52, 100, 618, 209)
$ListFind = GUICtrlCreateListView($columns, 900, 100, 618, 209)
$Lab_Recherche = GUICtrlCreateInput("", 688, 112, 193, 21)


While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
;---------------------PROBLEME----------------------------------------------------------
      Case $Btn_Recherche
         $text_recherche = GUICtrlRead($Lab_Recherche)
         $datacommande = _GUICtrlListView_CreateArray($ListCommande,Default)
         If $text_recherche <> "" Then
            _GUICtrlListView_DeleteAllItems($ListFind)
            For $i = 0 To _GUICtrlListView_GetItemCount($ListCommande) - 1
               $aArr = _GUICtrlListView_GetItemTextArray($ListCommande, $i)
               $sData1 = ""
               For $n = 1 To UBound($aArr) - 1
                  If StringInStr($aArr[$n], $text_recherche) = 0 Then $aArr[$n] = "---" ;<-- c'est mon soucie je pense
               Next
               GUICtrlCreateListViewItem($sData1, $ListFind)
            Next
         Else
            _GUICtrlListView_DeleteAllItems($ListFind)
            _GUICtrlListView_AddArray($ListFind, $datacommande)
         EndIf

;------------------------------------------------------------------------------------------
   EndSwitch
WEnd

 
Image

Comme d'habitude : je vous remercie du temps que vous me consacrerez, si je n'est pas été assez précis n'hésitez pas a me le signaler car ce n'est qu'un bout de mon programme et du coup j'ai découpé comme j'ai pue pour vous donnez les infos j'ai pue oublier quelque chose.

Re: Barre de Recherche&Bouton dans une listview  

Posté : mer. 26 févr. 2020 14:14
par mikell
Avec juste un bout de code c'est pas évident, mais AMHA tu te compliques la vie
En fait si ce que tu veux c'est l'item complet , qqe chose comme ça devrait le faire

For $i = 0 To _GUICtrlListView_GetItemCount($ListCommande) - 1
   $item = _GUICtrlListView_GetItemTextString($ListCommande, $i)
   If StringInStr($item, $text_recherche) Then _GUICtrlListView_AddItem($sData1, $item)
Next

Re: Barre de Recherche&Bouton dans une listview

Posté : mer. 26 févr. 2020 14:31
par Doctox
Merci pour l'aide Mikell, j'essaie d'adapter et je pensais bien me casser la tête c'est pour sa que je suis venue demander une piste, merci.

Edit :

Toujours pareil je partage pour ceux qui en aurait besoins même si maintenant que j'ai la solution sa paraît pas compliqué :
Case $Btn_Recherche
      $text_recherche = GUICtrlRead($Lab_Recherche)
      $datacommande = _GUICtrlListView_CreateArray($ListCommande,Default)
      ;MsgBox(0,"",$text_recherche)
      If $text_recherche <> "" Then
         _GUICtrlListView_DeleteAllItems($ListFind)
         For $i = 0 To _GUICtrlListView_GetItemCount($ListCommande) - 1
            $item = _GUICtrlListView_GetItemTextString($ListCommande, $i)
            If StringInStr($item, $text_recherche) Then
                                        GUICtrlCreateListViewItem($item,$ListFind)
            EndIf
         Next
      Else ; When no filter present.
         _GUICtrlListView_DeleteAllItems($ListFind)
         _GUICtrlListView_AddArray($ListFind, $datacommande)
      EndIf