ListiconGadget
ListiconGadget
Salut,
Ne serait-il pas possible d'ajouter un paramètre permettant que lorsque l'on active #PB_ListIcon_CheckBoxes|#PB_ListIcon_MultiSelect, le fait de cocher une checkbox, ca coche toute la sélection ?
Merci Bye
Ne serait-il pas possible d'ajouter un paramètre permettant que lorsque l'on active #PB_ListIcon_CheckBoxes|#PB_ListIcon_MultiSelect, le fait de cocher une checkbox, ca coche toute la sélection ?
Merci Bye
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
moi, j'aimerais bien avoir un évènement qui indique si on a coché ou décoché une ligne
car actuellement, impossible de savoir si on a coché ou décocher une ligne et en plus, on ne sait pas quel sur quel ligne on a agit.

car actuellement, impossible de savoir si on a coché ou décocher une ligne et en plus, on ne sait pas quel sur quel ligne on a agit.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
ouai c vrai çà - g eu le pb aussi - bon j'ai fais comme çà du coup mais bon ( sans appel aux API windows ) :
Code : Tout sélectionner
OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu,"Test")
CreateGadgetList(WindowID())
ListIconGadget(0,10,10,380,280,"id",100,#PB_ListIcon_CheckBoxes|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(0,1,"nom",100)
AddGadgetColumn(0,2,"propriété",100)
For i=0 To 100
AddGadgetItem(0,-1,"ex"+Str(i)+Chr(10)+"test"+Str(i))
Next
AdvancedGadgetEvents(#True)
Repeat
ev = WaitWindowEvent()
Select ev
Case #PB_Event_Gadget
If EventGadgetID() = 0
If EventType() = 0
pos = GetGadgetState(0)
If pos <> -1
If GetGadgetItemState(0,pos) & #PB_ListIcon_Checked
SetGadgetItemState(0,pos,#Null)
Else
SetGadgetItemState(0,pos,#PB_ListIcon_Checked|#PB_ListIcon_Selected)
EndIf
EndIf
EndIf
EndIf
EndSelect
Until ev = #PB_Event_CloseWindow
End
Régis, tu ne regarde pas mes codesLe Soldat Inconnu a écrit :moi, j'aimerais bien avoir un évènement qui indique si on a coché ou décoché une ligne![]()
car actuellement, impossible de savoir si on a coché ou décocher une ligne et en plus, on ne sait pas quel sur quel ligne on a agit.

J'ai mis sur mon site (car la taille est trop grande pour le forum) un code pour supprimer les adresses de la liste des URL de IE
La structure *lpnmia.NMLISTVIEW = lParam permet de récupérer les infos sur l'élément.
Faute d'une commande directe, le code fonctionne bien. En utilisant ma librairie, commande SelectListiconCheckBox(), on peut cocher/décocher toutes les cases facilement
message ici
http://purebasic.hmt-forum.com/viewtopic.php?t=1530
il y a le lien correspondant à mon code dans le message
Dans la callback, j'intercepte les événement de cochage/décochage
Code : Tout sélectionner
Case #WM_NOTIFY ; pour intercepter les événements des ListiconGadget
; détecte le click simple sur la boite à cocher
; deux cas la valeur retournée vaut :
*lpnmia.NMLISTVIEW = lParam
Select *lpnmia\hdr\code
Case #LVN_ITEMCHANGED
If * lpnmia\uNewState = 4096 ; l'élément vient d'être décoché
If ListIconAfficher = #Listicon
; on affiche la ligne en noir, police systeme
SetRowColor(#Listicon, *lpnmia\iItem, #black, RGB(255, 255, 223), 0)
Else
SetItemColor(#Listicon_import, *lpnmia\iItem, 0, #black, RGB($DB, $ED, $DC), 0)
EndIf
UpdateMyStatusBar()
ElseIf * lpnmia\uNewState = 8192 ; l'élément vient d'être coché
If ListIconAfficher = #Listicon
; on affiche la ligne correspondante en noir, police grasse, le fond des lignes plus foncé
SetRowColor(#Listicon, *lpnmia\iItem, #black, RGB(208, 208, 176), font)
Else
SetItemColor(#Listicon_import, *lpnmia\iItem, 0, #black, RGB($DB - $2F, $ED - $2F, $DC - $2F), font)
EndIf
UpdateMyStatusBar()
EndIf
EndSelect
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Bien d'accord avec toi Flype, ça simplifirait les chosesFlype a écrit :oui denis ta lib est une incontournable, qui fait partie de mon pack perso depuis qu'elle existe. ceci dit regis a raison il faudrait que ce soit integré a PB ne serait ce que pour rendre cà accessible aux utilisateurs linux ou autre.
J'ai amélioré le code depuis, le voici
Code : Tout sélectionner
*lpnmia.NMLISTVIEW = lParam
Select *lpnmia\hdr\code
Case #LVN_ITEMCHANGED
If *lpnmia\uNewState = 4096 And * lpnmia\uOldState = 8192 ; l'élément vient d'être décoché
Select *lpnmia\hdr\hwndFrom
Case GadgetID(#ListIconConstantes)
ElseIf *lpnmia\uNewState = 8192 And * lpnmia\uOldState = 4096 ; l'élément vient d'être coché
Select *lpnmia\hdr\hwndFrom
Case GadgetID(#ListIconConstantes)