Barre de Recherche&Bouton dans une listview

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Doctox
Niveau 1
Niveau 1
Messages : 10
Enregistré le : dim. 09 févr. 2020 13:31
Status : Hors ligne

Barre de Recherche&Bouton dans une listview

#1

Message 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.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Barre de Recherche&Bouton dans une listview  

#2

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Doctox
Niveau 1
Niveau 1
Messages : 10
Enregistré le : dim. 09 févr. 2020 13:31
Status : Hors ligne

Re: Barre de Recherche&Bouton dans une listview

#3

Message 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
 
Répondre