Page 1 sur 1

Listicongadget

Publié : lun. 19/déc./2005 8:26
par Cagou-77
Bonjour,

se pourrait-il qu'un pro de PureBasic puisse me créer une listicongadget pour trier et rechercher des données.

EXEMPLE :
Clic sur l'entête de la colonne, on trie les données, et on affiche un striggadget à la place de l'entête de colonne pour rechercher une donnée dans la colonne sélectionnée.

cela fait des jours que je me creuse la tête mais je n'y arrive pas et je n'ai pas trouver l'exemple qui convient sur le forum .

se serait sympa de votre part

Merci d'avance.

Publié : lun. 19/déc./2005 9:04
par Flype
Il y a une library qui fait exactement ce dont tu as besoin :

http://people.freenet.de/gnozal/
http://people.freenet.de/gnozal/PureLVSORT.zip

Je l'utilise depuis longtemps, elle est très bien tu verras ;-)

Publié : lun. 19/déc./2005 10:15
par Jacobus
Ce n'est peut-être pas vraiment ce que tu cherches mais cela devrait quand même te donner des pistes.
Ce n'est pas un exemple fonctionnel, mais deux méthodes d'utilisation, l'une pour rechercher un élément dans une listicon et l'autre pour modifier un élément dans la listicon. A adapter en fonction de ce que tu veux.



;Recherche d'un élément dans une ListIcon, dans n'importe quelle colonne.
;Tu colle cette procédure avant ta fenêtre en la modifiant en fonction de ton code
;l'item correspondant à la recherche sera sélectionné si trouvé.
Procedure FindStringList(searchString.s,NbColumns) ;Procédure de Chris
   For Colonne = 0 To NbColumns -1
     For Ligne = 0 To CountGadgetItems ( #ListIcon )
       If GetGadgetItemText ( #ListIcon ,Ligne,Colonne) = searchString
         SetGadgetItemState ( #ListIcon ,Ligne, #PB_ListIcon_Selected )
         SendMessage_ ( GadgetID ( #ListIcon ), #LVM_ENSUREVISIBLE ,Ligne, #True )
        Break 2
       EndIf
     Next
   Next
   If GetGadgetItemText ( #ListIcon ,Ligne,Colonne) <> searchString
     MessageRequester ( "RECHERCHE INFRUCTUEUSE" , "ELEMENT INCONNU" + Chr (13)+ "Vous devriez recommencer avec un autre élément" , #MB_ICONEXCLAMATION )
   EndIf
EndProcedure
;Dans ta boucle tu lance la recherche ainsi ( 7 correspond au nombre de colonnes de la listicon.)
Case #btn_SearchInListicon : FindStringList( GetGadgetText ( #String_search ),7) ; #String_search correspond à un StringGadget() de saisie de la recherche

;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

;Pour sélectionner la colonne où tu veux modifier un élément tu utilises une ComboBox répertoriant les noms
;de tes colonnes de listicon. Il faut qu'ils soient identiques (sensibles à la casse)
   ;exemple : dans ta fenêtre....
    ComboBoxGadget ( #SelectColonne , 0, 142, 130, 120) ;,#PB_ComboBox_Editable)
     AddGadgetItem ( #SelectColonne , -1, "Nom" )
     AddGadgetItem ( #SelectColonne , -1, "Prénom" )
     AddGadgetItem ( #SelectColonne , -1, "Adresse" )
     AddGadgetItem ( #SelectColonne , -1, "e-mail" )
     AddGadgetItem ( #SelectColonne , -1, "Téléphone" )
     AddGadgetItem ( #SelectColonne , -1, "Âge" )
     AddGadgetItem ( #SelectColonne , -1, "Sexe" )
     AddGadgetItem ( #SelectColonne , -1, "Planète" )
    
   ; dans ta boucle...
;Une fois que tu as sélectionné une colonne
;Un clic droit sur l'élément à modifier.
Case #ListIcon
  Resultat$ = GetGadgetText ( #SelectColonne )
   If Resultat$ = "Nom" : Colonne=0
   ElseIf Resultat$= "Prénom" : Colonne=1
   ElseIf Resultat$= "Adresse" : Colonne=2
   ElseIf Resultat$= "e-mail" : Colonne=3
   ElseIf Resultat$= "Téléphone" : Colonne=4
   ElseIf Resultat$= "Âge" : Colonne=5
   ElseIf Resultat$= "Sexe" : Colonne=6
   ElseIf Resultat$= "Planète" : Colonne=7
   EndIf
  Pos = GetGadgetState ( #ListIcon )
   If Pos >= 0
   If EventType () = #PB_EventType_RightClick
   Txt.s = InputRequester ( "MODIFICATION D'UN ELEMENT" , "Entrez vos modifications :" , GetGadgetItemText ( #ListIcon , Pos, Colonne))
   SetGadgetItemText ( #ListIcon , Pos, Txt, Colonne)
   EndIf
EndIf