Listicongadget- case à cocher
-
- Messages : 20
- Inscription : lun. 18/avr./2022 14:23
Listicongadget- case à cocher
Bonjour, dans une Listicongadget
Comment décocher un case à cocher par programmation
Car setgadgetstate(#Listi ) et
Setgadgetitemstate( #Listi, pos, -1 )
Ne fonctionne pas.
Quand j’ajoute une ligne dans la Listicongadget
La case est cochée
Je valide la ligne, en crée une nouvelle mais la précédente
N’est pas décoché
Merci pour votre aide
Comment décocher un case à cocher par programmation
Car setgadgetstate(#Listi ) et
Setgadgetitemstate( #Listi, pos, -1 )
Ne fonctionne pas.
Quand j’ajoute une ligne dans la Listicongadget
La case est cochée
Je valide la ligne, en crée une nouvelle mais la précédente
N’est pas décoché
Merci pour votre aide
Re: Listicongadget- case à cocher
C'est comme ça :
Et, bien sûr, ça se modifie quand l'élément existe, pas quand la listIcon est vide.
Et, pour récupérer l'état d'une case à cocher en listIcon :
(Et c'est dans la section débutant qu'il faut poser la question, là j'ai mis plein de merde sur mon smartphone parce que t'as fait sonner la boîte mail et donc j'ai répondu sans gant)
Code : Tout sélectionner
SetGadgetItemState(TonGadget, TonElement, #PB_ListIcon_Checked)
Et, pour récupérer l'état d'une case à cocher en listIcon :
Code : Tout sélectionner
Etat = Bool(GetGadgetItemState(TonGadget, TonElement) & #PB_ListIcon_Checked)
Re: Listicongadget- case à cocher
À tête reposée, cette procédure récupère ou modifie l'état d'une checkbox.
G = Numéro de gadget
E = Numéro d'élément
C = Commande de la case à cocher
0: pas de modification
1: mise à zéro
2: mise à un
4: va-et-vient
Valeur de retour = Etat de la case à cocher (1 ou 0)
G = Numéro de gadget
E = Numéro d'élément
C = Commande de la case à cocher
0: pas de modification
1: mise à zéro
2: mise à un
4: va-et-vient
Valeur de retour = Etat de la case à cocher (1 ou 0)
Code : Tout sélectionner
Procedure libox(G, E, C = 0)
Chk = #PB_ListIcon_Checked
S = GetGadgetItemState(G, E)
D = Bool(S & Chk)
If C & 7
D = (D ! Bool(C & 4) ) | Bool(C & 2) & Bool(Not(C & 1) )
SetGadgetItemState(G, E, (S & ~Chk) | (D * Chk) )
EndIf
ProcedureReturn D
EndProcedure
Re: Listicongadget- case à cocher
J'ai mis les deux procédures (check box et sélection, gérés indépendamment) en suggestion pour que ça soit natif dans une prochaine mise à jour :
https://www.purebasic.fr/english/viewtopic.php?p=583318
Pour simplifier et être plus fonctionnel :
Exemple concret :
https://www.purebasic.fr/english/viewtopic.php?p=583318
Pour simplifier et être plus fonctionnel :
Code : Tout sélectionner
Procedure Mask(S, C, M)
Select C
Case 0: S & ~M
Case 1: S | M
Case 2: S = Bool(S & M) ; non exclusive result (only a 1-bit set returns a logical one else zero)
Case 3: S ! M
Case 4: S = Not((S & M) - M) ; exclusive result (all the bits of the mask must be set to cause a logical one else zero)
EndSelect
ProcedureReturn S
EndProcedure
Code : Tout sélectionner
WinFlag = Mask(WinFlag, 1, #PB_Window_SizeGadget) ; active l'état de redimensionnement d'une option de fenêtre
WinFlag = Mask(WinFlag, 0, #PB_Window_SizeGadget) ; désactive l'état de redimensionnement d'une option de fenêtre
WinFlag = Mask(WinFlag, 3, #PB_Window_SizeGadget) ; change logiquement l'état de redimensionnement d'une option de fenêtre
Debug Mask(WinFlag, 4, #PB_Window_SizeGadget) ; retourne l'état exclusif de redimensionnement d'une option de fenêtre
Debug Mask(WinFlag, 2, #PB_Window_SizeGadget) ; retourne l'état non exclusif de redimensionnement d'une option de fenêtre
-
- Messages : 20
- Inscription : lun. 18/avr./2022 14:23
Re: Listicongadget- case à cocher
Bonsoir et Merci Olivier
je vient de tester ta fonction
elle fonctionne pour l’effacement de la case à cocher
mais ne coche pas lors de l'ajout d'une nouvelle ligne.
Merci d'avance
;G = Numéro de gadget
;E = Numéro d'élément
;C = Commande de la Case à cocher
;0: pas de modification
;1: mise à zéro
;2: mise à un
;4: va-et-vient
;Valeur de retour = Etat de la Case à cocher (1 ou 0)
libox( 1, GetGadgetState( 1 ), 1 )
If GetGadgetState( 1 ) = -1
AddGadgetItem( 1,-1,"new" )
x = CountGadgetItems( 1 )
libox( 1, x, 2 )
EndIf
je vient de tester ta fonction
elle fonctionne pour l’effacement de la case à cocher
mais ne coche pas lors de l'ajout d'une nouvelle ligne.
Merci d'avance
;G = Numéro de gadget
;E = Numéro d'élément
;C = Commande de la Case à cocher
;0: pas de modification
;1: mise à zéro
;2: mise à un
;4: va-et-vient
;Valeur de retour = Etat de la Case à cocher (1 ou 0)
libox( 1, GetGadgetState( 1 ), 1 )
If GetGadgetState( 1 ) = -1
AddGadgetItem( 1,-1,"new" )
x = CountGadgetItems( 1 )
libox( 1, x, 2 )
EndIf
Re: Listicongadget- case à cocher
La 1ère ligne est repérée par le numéro zéro. Donc si tu te repères avec CountGadgetList() il faut décrémenter (ajouter -1)Et tu verras : ma procédure ne bugue pas. Si tu as d'autres questions, n'hésite pas.
Code : Tout sélectionner
0: ligne 1
1: ligne 2
2: ligne 3
...
...
x: ligne x+1
Code : Tout sélectionner
libox( 1, GetGadgetState( 1 ), 1 )
If GetGadgetState( 1 ) = -1
AddGadgetItem( 1,-1,"new" )
x = CountGadgetItems( 1 ) - 1 ; <<< ------ ICI LE " -1 "
libox( 1, x, 2 )
EndIf
-
- Messages : 20
- Inscription : lun. 18/avr./2022 14:23
Re: Listicongadget- case à cocher
Bonjour olivier
opération réussi
Merci
opération réussi
Merci
-
- Messages : 20
- Inscription : lun. 18/avr./2022 14:23
Structure
Bonjour Olivier
existe-t'il une solution pour lister le contenu d'une structure,
voilà: je suis sur une recherche multicritère et je voudrais lister les variables contenu dans la structure et créer les colonnes d'une listicon
et charger les éléments enregistrés
ex : j'ai une Structure Classeur
et la recherche ( j'aimerai simplifier le code ci-dessous car j'ai 3 combos, 3 string pour la valeur à rechercher )
donc 3 colonnes à créer
j'espère que cela sera clair pour toi .
merci d'avance
---edit Ar-S---
Merci de penser à mettre le code dans les balises codes à cet effet. [ code ][ /code ]
C'est corrigé
existe-t'il une solution pour lister le contenu d'une structure,
voilà: je suis sur une recherche multicritère et je voudrais lister les variables contenu dans la structure et créer les colonnes d'une listicon
et charger les éléments enregistrés
ex : j'ai une Structure Classeur
Code : Tout sélectionner
NumEnrg.i
CompteTiers.s
TypePiece.s
NumeroPiece.s
DateEnrg.s
Debit.s
Credit.s
Acompte.s
DateEch.s
FraisDiv.s
TauxTva.s
ModeRegl.s
; List LigneDoc.Ligne()
EndStructure
Mydb()\Classeur() (et d'autre tables)
additem( combo, -1, (là les éléments de la structure) )
donc 3 colonnes à créer
Code : Tout sélectionner
If GetGadgetText( Combo_0 ) = "Classeur"
If GetGadgetText( String_0 ) <> ""
If GetGadgetText( Combo_1 ) = "CompteTiers"
AddGadgetColumn( ListIcon_0, 0, "CompteTiers", 100 )
AddGadgetColumn( ListIcon_0, 1, "TypePiece", 100 )
AddGadgetColumn( ListIcon_0, 2, "NumeroPiece", 100 )
ForEach Mydb()\Classeur()
If GetGadgetText( String_0 ) = MyDb()\Classeur()\CompteTiers
AddGadgetItem( ListIcon_0, -1 , MyDb()\Classeur()\CompteTiers+Chr(10)+MyDb()\Classeur()\TypePiece+Chr(10)+MyDb()\Classeur()\NumeroPiece+Chr(10)+MyDb()\Classeur()\DateEnrg )
EndIf
Next
EndIf
EndIf
EndIf
merci d'avance
---edit Ar-S---
Merci de penser à mettre le code dans les balises codes à cet effet. [ code ][ /code ]
C'est corrigé
-
- Messages : 20
- Inscription : lun. 18/avr./2022 14:23
Re: Listicongadget- case à cocher
Merci Désolé
Re: Listicongadget- case à cocher
C'est une bonne question... Je dirais "oui", à coup sûr même, mais il y a un prix : ça contraint à lire le fichier source comme un fichier texte, et retrouver la structure voulue.
Donc le plus judicieux est de lire ce fichier pour exporter le texte de la structure dans un tableau, une zone data ou un fichier texte, afin de le crypter si besoin.
Je vais m'attarder sur cette question quand j'ai un peu de temps pour produire un code...
Donc le plus judicieux est de lire ce fichier pour exporter le texte de la structure dans un tableau, une zone data ou un fichier texte, afin de le crypter si besoin.
Je vais m'attarder sur cette question quand j'ai un peu de temps pour produire un code...
Re: Listicongadget- case à cocher
Pourrais tu mettre un code fonctionnel pour exprimer ton besoin ?
As tu explorer les Map() ?
As tu explorer les Map() ?
~~~~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
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Listicongadget- case à cocher
Salut
Pour rappel, PureBasic intègre la bibliothèque DataBase pour la gestion de base de données.
peut-être faudrait il que tu te penches sur le stockage de tes données en BdD si tu as des requêtes de recherches un peu lourdes.
Ne connaissant pas ton projet, difficile de justifier si c'est un bon choix, mais par expérience, plus il y a de données, plus simple est la gestion par des requêtes SQL.
Pour rappel, PureBasic intègre la bibliothèque DataBase pour la gestion de base de données.
peut-être faudrait il que tu te penches sur le stockage de tes données en BdD si tu as des requêtes de recherches un peu lourdes.
Ne connaissant pas ton projet, difficile de justifier si c'est un bon choix, mais par expérience, plus il y a de données, plus simple est la gestion par des requêtes SQL.