ListIcongadget - griser le case à cocher
ListIcongadget - griser le case à cocher
Bonjour,
Je programme avec Purebasic sous MacOs depuis quelques mois et j'arrive à trouver les réponses à mes problèmes, mais la je cale. Je voudrais griser les cases à cocher d'une ListIcingadget pour les désactiver. J'ai utiliser DisableGadget (#ListIcongadget), mais toutes la liste devient inactive et pas très pratique à utiliser.
Autre problème, est-il possible d'avoir un event lorsque l'on clique sur un titre d'une ListIcongadget pour déclencher un trie par exemple.
Merci d'avance si vous avez une solution ou une piste.
Bien Cordialement
Je programme avec Purebasic sous MacOs depuis quelques mois et j'arrive à trouver les réponses à mes problèmes, mais la je cale. Je voudrais griser les cases à cocher d'une ListIcingadget pour les désactiver. J'ai utiliser DisableGadget (#ListIcongadget), mais toutes la liste devient inactive et pas très pratique à utiliser.
Autre problème, est-il possible d'avoir un event lorsque l'on clique sur un titre d'une ListIcongadget pour déclencher un trie par exemple.
Merci d'avance si vous avez une solution ou une piste.
Bien Cordialement
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
Re: ListIcongadget - griser le case à cocher
Bonjour,
Pourrais tu poster un bout de code stp ?.
Pourrais tu poster un bout de code stp ?.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: ListIcongadget - griser le case à cocher
Bonsoir,
Merci pour ta réponse.
Voici un code, donc quand on valide le bouton verrouille 1, j'aimerais simplement griser les checkbox , et non tout le texte, ou invalider le changement d'état des checkbox, même si celui-ci n'est pas traité en EventGadget;
Bien cordialement
Merci pour ta réponse.
Voici un code, donc quand on valide le bouton verrouille 1, j'aimerais simplement griser les checkbox , et non tout le texte, ou invalider le changement d'état des checkbox, même si celui-ci n'est pas traité en EventGadget;
Code : Tout sélectionner
If OpenWindow(1, 100, 100, 600, 200, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 5, 5, 590, 140, "Name", 100,#PB_ListIcon_CheckBoxes)
AddGadgetColumn(0, 1, "Address", 250)
AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
ButtonGadget(10, 20 , 160 , 100, 30, "verrouille 1",#PB_Button_Toggle )
Repeat
Event = WaitWindowEvent()
Gadget = EventGadget()
Select Gadget
Case 10
If GetGadgetState(Gadget) = 1
DisableGadget(0,#True) ; de préférence invalider uniquement le changement d'état des checkbox
Else
DisableGadget(0,#False)
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
Re: ListIcongadget - griser le case à cocher
Je ne suis pas sur que tu y arrives nativement.
Par contre tu peux gruger avec des checkboxgadget. C'est pas ultra propre mais c'est une solution possible si tu n'en trouves pas d'autres.
Une autre solution plus graphique serait d'utiliser un canvas pour te créer une liste gadget personnalisable.
Par contre tu peux gruger avec des checkboxgadget. C'est pas ultra propre mais c'est une solution possible si tu n'en trouves pas d'autres.
Code : Tout sélectionner
If OpenWindow(1, 100, 100, 600, 200, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 15, 5, 570, 140, "Name", 100)
AddGadgetColumn(0, 1, "Address", 250)
AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
ButtonGadget(10, 20 , 160 , 100, 30, "verrouille 1",#PB_Button_Toggle )
CheckBoxGadget(1, 1, 30,10, 20, "")
CheckBoxGadget(2, 1, 50,10, 20, "")
Repeat
Event = WaitWindowEvent()
Gadget = EventGadget()
Select Gadget
Case 10
If GetGadgetState(Gadget) = 1
DisableGadget(1,#True)
DisableGadget(2,#True)
Else
DisableGadget(1,#False)
DisableGadget(2,#False)
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: ListIcongadget - griser le case à cocher
Bonjour,
Merci pour ces pistes, je me doutais que si je ne trouve pas sur les forums, ce n'est certainement pas possible.
En solution , pour verrouiller mais laisser l'affichage tel quel , lors un changement d'état de la checkbox, je raffarichie la liste tel quel donc la checkbox ne change pas en apparence. L'effet est correct.
Bien cordialement
Merci pour ces pistes, je me doutais que si je ne trouve pas sur les forums, ce n'est certainement pas possible.
En solution , pour verrouiller mais laisser l'affichage tel quel , lors un changement d'état de la checkbox, je raffarichie la liste tel quel donc la checkbox ne change pas en apparence. L'effet est correct.
Bien cordialement
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
Re: ListIcongadget - griser le case à cocher
Je viens de tester ton code, et ta solution me plait bien également.
cordialement
cordialement
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
Re: ListIcongadget - griser le case à cocher
Suite si cela intéresse quelqu'un ...
J'ai adapté la solution de Ar-S avec une 2eme ListeIconGadget ne contenant que des checkbox , plus facile pour aligner et certainement plus facile pour la gestion des événements.
J'ai adapté la solution de Ar-S avec une 2eme ListeIconGadget ne contenant que des checkbox , plus facile pour aligner et certainement plus facile pour la gestion des événements.
Code : Tout sélectionner
If OpenWindow(1, 100, 100, 600, 200, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 40, 5, 570, 140, "Name", 100)
ListIconGadget(11, 6, 5, 35, 140, "P", 20,#PB_ListIcon_CheckBoxes)
AddGadgetColumn(0, 1, "Address", 250)
AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
ButtonGadget(10, 20 , 160 , 100, 30, "verrouille 1",#PB_Button_Toggle )
AddGadgetItem(11, -1, "")
AddGadgetItem(11, -1, "")
TextGadget(#PB_Any,15,12,20, 20,"P")
Repeat
Event = WaitWindowEvent()
Gadget = EventGadget()
Select Gadget
Case 10
If GetGadgetState(Gadget) = 1
DisableGadget(11,#True)
Else
DisableGadget(11,#False)
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
Re: ListIcongadget - griser le case à cocher
Effectivement c'est plus simple pour aligner. L'intérêt des checkbox c'est dans le cas ou tu ne souhaite disable que certaines d'entre elles.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: ListIcongadget - griser le case à cocher
On peut utuiliser l'astuce des images.
Pour info, sans timer, ça ne marche pas bien.
M.
Code : Tout sélectionner
;
;Mesa February 2022
Enumeration imagecheckbox
#imCheckNo
#imCheckYes
#imCheckNoGray
#imCheckYesGray
EndEnumeration
Enumeration gadget
#listicon
#btnlock
EndEnumeration
CreateImage(#imCheckNo,16,16,24,#White)
StartDrawing(ImageOutput(#imCheckNo))
DrawingMode(#PB_2DDrawing_Outlined )
Box(1,1,15,15,#Black)
StopDrawing()
CreateImage(#imCheckYes,16,16,24,#White)
StartDrawing(ImageOutput(#imCheckYes))
DrawingMode(#PB_2DDrawing_Outlined )
Box(1,1,15,15,#Black)
LineXY(1,1,15,15,#Black)
LineXY(15,1,1,15,#Black)
StopDrawing()
CreateImage(#imCheckNoGray,16,16,24,#Gray)
StartDrawing(ImageOutput(#imCheckNoGray))
DrawingMode(#PB_2DDrawing_Outlined )
Box(1,1,15,15,#Black)
StopDrawing()
CreateImage(#imCheckYesGray,16,16,24,#Gray)
StartDrawing(ImageOutput(#imCheckYesGray))
DrawingMode(#PB_2DDrawing_Outlined )
Box(1,1,15,15,#Black)
LineXY(1,1,15,15,#Black)
LineXY(15,1,1,15,#Black)
StopDrawing()
Global Dim checkstate(1)
ItemHeight = 18 ; Change this value if you change the fontsize of the listicongadget
If OpenWindow(0, 100, 100, 600, 200, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#listicon, 40, 5, 470, 140, "Name", 100)
AddGadgetColumn(#listicon, 1, "Address", 250)
margin$=" "
For i=0 To 50
AddGadgetItem(#listicon, -1, margin$+"Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay",ImageID(#imCheckNo))
AddGadgetItem(#listicon, -1, margin$+"Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity",ImageID(#imCheckNo))
Next i
ReDim checkstate(CountGadgetItems(#listicon))
ButtonGadget(#btnlock, 20 , 160 , 100, 30, "Lock",#PB_Button_Toggle )
gadgetx = GadgetX(#listicon,#PB_Gadget_ScreenCoordinate)
gadgety = GadgetY(#listicon,#PB_Gadget_ScreenCoordinate)
AddWindowTimer(0,125,10)
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Timer
If flag = 1
checkx = DesktopMouseX()
checky = DesktopMouseY()
If checkx > gadgetx And checkx < (gadgetx+ItemHeight)
item = Int((checky - gadgety - ItemHeight)/ItemHeight)
itemstste = GetGadgetItemState(#listicon,item)
checkstate(item) = checkstate(item)!1
If checkstate(item) = #PB_ListIcon_Selected
count + 1
SetGadgetItemImage(#listicon, item, ImageID(#imCheckYes))
Else
count - 1
SetGadgetItemImage(#listicon, item, ImageID(#imCheckNo))
EndIf
EndIf
If count <> oldcount
Debug "Item : "+Str(item)+" Checkbox state has changed "
EndIf
oldcount = count
flag = 0
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case #listicon
Select EventType()
Case #PB_EventType_LeftClick
If GetGadgetState(#btnlock)=0
; if not locked
flag = 1
EndIf
EndSelect
Case #btnlock
;If this button is toggled, it's not allowed to check or uncheck anything and checkboxes are grayed
;else checkboxes are enabled and white
Select EventType()
Case #PB_EventType_LeftClick
If GetGadgetState(#btnlock)=1
im0=#imCheckNoGray
im1=#imCheckYesGray
Else
im0=#imCheckNo
im1=#imCheckYes
EndIf
For i=0 To CountGadgetItems(#listicon) -1
If checkstate(i)=0
SetGadgetItemImage(#listicon, i, ImageID(im0))
Else
SetGadgetItemImage(#listicon, i, ImageID(im1))
EndIf
Next i
EndSelect
EndSelect
EndSelect
Until Quit = 1
EndIf
M.