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
EndIfM.
