Page 1 sur 1

Moteur de recherche ListIconGadget (exemple)

Publié : lun. 09/août/2010 0:46
par venom
Bonsoir,

voilà ne sachant pas quoi faire ce soir je me suis dit tiens pourquoi pas essayé de faire un petit moteur de recherche basic pour les ListIconGadget.
je n'ai pas regarder sur le forum si cela a déjà était fait (je pense que si), j'avais envie de faire ça :P . Et tant qu'a faire je l'ai un petit peut commenter et je vous donne la source au cas ou une amelioration ou un besoin, ont ne sais jamais.

Code : Tout sélectionner

;- programmer par venom PureBasic 4.50
;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #String_0
  #Button_0
  #ListIcon_0
EndEnumeration

If OpenWindow(#Window_0, 0, 0, 450, 290, "Moteur de recherche ListIconGadget", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  StringGadget(#String_0, 10, 10, 290, 20, "")
  ButtonGadget(#Button_0, 310, 10, 130, 20, "Recherche Nom")
  ;-
  ListIconGadget(#ListIcon_0, 10, 40, 430, 240, "Nom", 300, #PB_ListIcon_FullRowSelect)
  AddGadgetColumn(#ListIcon_0, 1, "Adresse", 250)
  For a = 0 To 122
    AddGadgetItem(#ListIcon_0, a, Str(a) + Chr(10) + Str(a * 2))
  Next
EndIf

Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    Select EventGadget()
        
      Case #Button_0
        For position = 0 To CountGadgetItems(#ListIcon_0)
          SetGadgetItemColor(#ListIcon_0, position, #PB_Gadget_BackColor, $FFFFFF, -1) ;- remet le fond en blanc (après une recherche trouvé)
          SetGadgetItemColor(#ListIcon_0, position, #PB_Gadget_FrontColor, $000000, -1) ;- remet le texte en noir (après une recherche trouvé)

          If CountString(GetGadgetItemText(#ListIcon_0, position, 0), GetGadgetText(#String_0)) = 0 ;- on cherche le texte dans le ListIconGadget tant que CountString egale 0
            CountString(GetGadgetItemText(#ListIcon_0, position + 1, 0), GetGadgetText(#String_0)) ;- si CountString egale 0 ont descend d'un cran dans le ListIconGadget
          ElseIf CountString(GetGadgetItemText(#ListIcon_0, position, 0), GetGadgetText(#String_0)) = 1 ;- si CountString égale 1 ont arrête la recherche et ont regarde si la longueur du texte chercher est égale a la longueur trouvé ex: ont cherche 10 ont vérifie que la longueur trouvé est bien de 2 caractères si non la recherche va indiquer tout les chiffres commençant par 10 ex: 100, 101, 102 etc...
            longeur_chaine_a_trouver = Len(GetGadgetText(#String_0)) ;- la longueur du texte que l'ont recherche
            longeur_chaine_listIcon = Len(GetGadgetItemText(#ListIcon_0, position, 0)) ;- la longueur du texte trouvé dans ListIconGadget
            
            If longeur_chaine_listIcon > longeur_chaine_a_trouver ;- si la longueur trouvé dans ListIconGadget est supérieure a la plongeur chercher ont abandonne et ont continue la recherche
            ElseIf longeur_chaine_listIcon = longeur_chaine_a_trouver ;- si la longueur trouvé dans ListIconGadget est égale a la longueur rechercher c'est que nous avons trouvé notre texte, et nous allons l'indiquer a l'utilisateur
              SetGadgetState(#ListIcon_0, position) ;- ont renvoie la position du texte qui est dans  ListIconGadget et qui est égale a notre recherche, et si besoin cette dernière se place sans bouger la scrollbar
              SetGadgetItemColor(#ListIcon_0, position, #PB_Gadget_BackColor, $FF9922, -1) ;- ont sélectionne le résultat en bleu
              SetGadgetItemColor(#ListIcon_0, position, #PB_Gadget_FrontColor, $FFFFFF, -1) ;- et ont met le texte en blanc pour une meilleur visibilité
            EndIf
            
          EndIf
        Next
        
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow
voilà je n'ai pas tester avec du texte mais ça doit fonctionné.






@++

Re: Moteur de recherche ListIconGadget (exemple)

Publié : mar. 10/août/2010 9:19
par Le psychopathe
Oui sur du texte cela fonctionne, j'avais fait un petit annuaire avec listicon gadget et cela fonctionnait bien.

Re: Moteur de recherche ListIconGadget (exemple)

Publié : mar. 10/août/2010 13:40
par dayvid
merci a toi venom, je vais étudier ton éxemple :D