comment lister les gadgets
comment lister les gadgets
Bonjour, comment lister tous les gadgets d'une fenêtre pour leur effectuer un traitement particulier
genre :
dans une page de Panelgadget
lors qu'un gadget à le focus ont change la couleur de fond.
lors qu'il perd le focus ont réinitialise sa couleur de fond.
mais lors d'un changement de page ont ne réinitialise pas le gadget qui à le focus,
c'est gênant visuellement.
j'espère mettre fait comprendre.
genre :
dans une page de Panelgadget
lors qu'un gadget à le focus ont change la couleur de fond.
lors qu'il perd le focus ont réinitialise sa couleur de fond.
mais lors d'un changement de page ont ne réinitialise pas le gadget qui à le focus,
c'est gênant visuellement.
j'espère mettre fait comprendre.
Re: comment lister les gadgets
Salut Cagou77
Tu peux trés bien affecter un numéro par gadget dans l'énumération, et ensuite te servir de ce numéro pour faire ce que tu veux, des boucles ou autres.
Enumération
#Fenêtre = 0; fenêtre principale
#bt_stop = 1 ;bouton arrêt
#bt_efface= 2 ; bouton éfface les strings
#bt_ecriture = 3 ; bouton pour l'écriture des strings
EndEnumeration
Michel
Tu peux trés bien affecter un numéro par gadget dans l'énumération, et ensuite te servir de ce numéro pour faire ce que tu veux, des boucles ou autres.
Enumération
#Fenêtre = 0; fenêtre principale
#bt_stop = 1 ;bouton arrêt
#bt_efface= 2 ; bouton éfface les strings
#bt_ecriture = 3 ; bouton pour l'écriture des strings
EndEnumeration
Michel
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: comment lister les gadgets
Tu crées une variable qui contiendra le n° de gadget de l'onglet actif que tu compareras ensuite à chaque changement de page... S'il diffère, tu fais ton traitement et tu réactualises la valeur de ta variable.Cagou77 a écrit :...mais lors d'un changement de page...
Ton nombre de gadgets est-il déterminé dès le départ ???Cagou77 a écrit :comment lister tous les gadgets d'une fenêtre
Si oui, utilise des constantes et la fonction GadgetType() afin de déterminer la nature du gadget car, selon, pour certains tu pourras utiliser les évènements #PB_EventType_Focus et #PB_EventType_LostFocus ou, pour d'autres, tu devras utiliser les API (sous Windows)...
Si non, là, ca se compliquera un peu....
Re: comment lister les gadgets
Tiens je croyais qu'il fallait soit énumérer de la sorte
Quelqu'un peut confirmer ?
Code : Tout sélectionner
Enumération
#Fenetre
#Gadget1
#gadget2
EndEnumeration
soit
#Fenetre = 0;
#Gadget1=1
etc..
Dernière modification par Ar-S le jeu. 17/févr./2011 12:00, modifié 1 fois.
~~~~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
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: comment lister les gadgets
@Ar-S
Si j'ai bien compris ton questionnement...
Les valeurs (et/ou ID) des gadgets sont indépendantes des fenêtres.
Soit :
Ici les constantes #Fenetre_1 et #Gadget_1 auront la même valeur 0, de même #Fenetre_2 et #Gadget_2 auront la même valeur 1 et ne provoqueront pas de conflit lors de leur utilisation conjointe...
Si j'ai bien compris ton questionnement...
Les valeurs (et/ou ID) des gadgets sont indépendantes des fenêtres.
Soit :
Code : Tout sélectionner
Enumeration
#Fenetre_1
#Fenetre_2
EndEnumeration
Enumeration
#Gadget_1
#Gadget_2
EndEnumeration
Re: comment lister les gadgets
Je n'étais effectivement pas sûr que cette séparation des énumérations fonctionnait.
Il est tout de même préférable à mon avis d'avoir le contrôle du numéro de ses gadgets.
Ne serait-ce que pour faciliter un changement à tous les éléments rapidement. et lorsqu'on a plein de gadgets, c'est plus facile de s'y retrouver.
#T1=1
#T2=2
#T3=3
#T4=4
#T5=5
#T6=6
Une simple coloration du texte se fait bien plus facilement avec un simple
Il est tout de même préférable à mon avis d'avoir le contrôle du numéro de ses gadgets.
Ne serait-ce que pour faciliter un changement à tous les éléments rapidement. et lorsqu'on a plein de gadgets, c'est plus facile de s'y retrouver.
#T1=1
#T2=2
#T3=3
#T4=4
#T5=5
#T6=6
Une simple coloration du texte se fait bien plus facilement avec un simple
Code : Tout sélectionner
for i = #T1 to #T6
SetGadgetColor(i, #PB_Gadget_BackColor, $00) ; par exemple
next
~~~~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: comment lister les gadgets
....................
Dernière modification par Backup le dim. 20/mars/2011 12:54, modifié 1 fois.
Re: comment lister les gadgets
Salut Dobro
Tu as raison, mais j'utilise souvent des fenêtres multiples dans mes programmes. En forçant la numérotation des gadgets cela me permet d'affecter une série de numéros par fenêtre.
Par exemple
Les gadgets de la fenêtre principale seront numérotés de 1 a 50, ceux de la première fenêtre secondaire de 51 a 80, ect.
Comme cela je suis sur de ne jamais avoir le même numéro pour deux gadgets différents. comme cela arrive en utilisant plusieurs énumérations.
Tu as raison, mais j'utilise souvent des fenêtres multiples dans mes programmes. En forçant la numérotation des gadgets cela me permet d'affecter une série de numéros par fenêtre.
Par exemple
Les gadgets de la fenêtre principale seront numérotés de 1 a 50, ceux de la première fenêtre secondaire de 51 a 80, ect.
Comme cela je suis sur de ne jamais avoir le même numéro pour deux gadgets différents. comme cela arrive en utilisant plusieurs énumérations.
Re: comment lister les gadgets
.................
Dernière modification par Backup le dim. 20/mars/2011 12:55, modifié 1 fois.
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: comment lister les gadgets
Il y aussi cette méthode là pour éviter que des constantes prennent la même valeur :
On peut donc avoir :Doc de PureBasic a écrit :Exemple: Enumérations chainées
Enumeration
#GadgetInfo ; Sera 0
#GadgetText ; Sera 1
#GadgetOK ; Sera 2
EndEnumeration
Enumeration #PB_Compiler_EnumerationValue
#GadgetCancel ; Sera 3
#GadgetImage ; Sera 4
#GadgetSound ; Sera 5
EndEnumeration
Code : Tout sélectionner
Enumeration ; Fenêtres
#Fenetre_1
#Fenetre_2
#Fenetre_3
#Fenetre_4
;...
EndEnumeration
Enumeration ; Gadgets Fenêtre 1
#GadgetFen1_1
#GadgetFen1_2
#GadgetFen1_3
#GadgetFen1_4
;...
EndEnumeration
Enumeration #PB_Compiler_EnumerationValue ; Gadgets Fenêtre 2
#GadgetFen2_1
#GadgetFen2_2
#GadgetFen2_3
#GadgetFen2_4
;...
EndEnumeration
Enumeration #PB_Compiler_EnumerationValue ; Gadgets Fenêtre 3
;...
EndEnumeration
Re: comment lister les gadgets
Moi j'ai un truc a demander
bin voila ya deux façon pour indexer des constante
la façon indexer qui est tres bien et la pas de problème
mais pour la façon dynamique la moi je suis perdus, je vous explique
j'ai une fenêtre et je crée un bouton (dynamiquement)
avec #PB_Any
donc le programme va automatiquement donner une valeur a ce bouton
méton 30498
bin voilà le problème !
comment je fait pour intéragire avec ce gadget maintenant ?!??!!?!!!
ba ouais car je ne peut pas dire, quand tu clique sur ce bouton faire sa
puisque je ne connais même pas sa valeur au momment ou je crée le programme
puisque j'ai crée le bouton dynamiquement souvenez-vous
Oui #PB_Any a alouer une valeur au bouton je sais mais
a ce momment la je ne connais pas sa valeur, je la connaitrais
que quand le bouton sera crée !
Pourquoi je vous basine avec sa lol ?
bin parceque je veut crée mon programme de
création de boitte de dialogue et même plus plus tard
A oui aussi je vous est pas dit mais je me complique certainement la vie là
en faite je voulais crée ce programme sans que on est as le compiler car
tous serais dejé compiler, en faite le programme lirais un fichier
texte et les gadget seron crée dinamiquement (pas le choix d'ailleur)
exemple, crée bouton X = 100, Y = 100, L = 100, H = 25, T = "Ok"
remarque, je vient de penser, pourquoi ne pas metre d'Identifiant:
crée bouton I = 1, X = 100, Y = 100, L = 100, H = 25, T = "Ok"
et quand je crée le bouton je lui donne l'Identifiant
de toute facon je ne peut pas faire autrement si ?
je ne sais pas si je suis claire la en plus
ba moi j'en pert mon latin
bin voila ya deux façon pour indexer des constante
la façon indexer qui est tres bien et la pas de problème
mais pour la façon dynamique la moi je suis perdus, je vous explique
j'ai une fenêtre et je crée un bouton (dynamiquement)
avec #PB_Any
donc le programme va automatiquement donner une valeur a ce bouton
méton 30498
bin voilà le problème !
comment je fait pour intéragire avec ce gadget maintenant ?!??!!?!!!
ba ouais car je ne peut pas dire, quand tu clique sur ce bouton faire sa
puisque je ne connais même pas sa valeur au momment ou je crée le programme
puisque j'ai crée le bouton dynamiquement souvenez-vous
Oui #PB_Any a alouer une valeur au bouton je sais mais
a ce momment la je ne connais pas sa valeur, je la connaitrais
que quand le bouton sera crée !
Pourquoi je vous basine avec sa lol ?
bin parceque je veut crée mon programme de
création de boitte de dialogue et même plus plus tard
A oui aussi je vous est pas dit mais je me complique certainement la vie là
en faite je voulais crée ce programme sans que on est as le compiler car
tous serais dejé compiler, en faite le programme lirais un fichier
texte et les gadget seron crée dinamiquement (pas le choix d'ailleur)
exemple, crée bouton X = 100, Y = 100, L = 100, H = 25, T = "Ok"
remarque, je vient de penser, pourquoi ne pas metre d'Identifiant:
crée bouton I = 1, X = 100, Y = 100, L = 100, H = 25, T = "Ok"
et quand je crée le bouton je lui donne l'Identifiant
de toute facon je ne peut pas faire autrement si ?
je ne sais pas si je suis claire la en plus

ba moi j'en pert mon latin

La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !
Mon forum http://purebasic.forumphp3.com/index.php
Mon forum http://purebasic.forumphp3.com/index.php
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: comment lister les gadgets
@Dayvid
Comme toujours, avant de poser une question, il convient de s'assurer que la réponse n'est pas déjà fournie dans la doc PB !!!
Par exemple, pour un bouton :
Description :
Crée un bouton dans la GadgetList en cours. Si #PB_Any est utilisé pour le paramètre '#Gadget', le numéro du nouveau gadget sera renvoyé dans 'Resultat'. #Gadget sera la valeur retournée par la fonction EventGadget().
Donc, à chaque fois que tu vois un #Gadget dans une fonction ou commande, tu le remplaces par le nom de la variable qui a reçu la valeur de #Pb_Any !
Comme ceci (Regarde bien l'utilisation de GadgetID) :
Comme toujours, avant de poser une question, il convient de s'assurer que la réponse n'est pas déjà fournie dans la doc PB !!!
Par exemple, pour un bouton :
Description :
Crée un bouton dans la GadgetList en cours. Si #PB_Any est utilisé pour le paramètre '#Gadget', le numéro du nouveau gadget sera renvoyé dans 'Resultat'. #Gadget sera la valeur retournée par la fonction EventGadget().
Donc, à chaque fois que tu vois un #Gadget dans une fonction ou commande, tu le remplaces par le nom de la variable qui a reçu la valeur de #Pb_Any !
Comme ceci (Regarde bien l'utilisation de GadgetID) :
Code : Tout sélectionner
OpenWindow(0,0,0,100,60,"Test GadgetID",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
GadgetID=ButtonGadget(#PB_Any,20,20,80,20,"Ok")
Repeat
Evenmt=WaitWindowEvent():NoGadget=EventGadget()
Select Evenmt
Case #PB_Event_CloseWindow:End
Case #PB_Event_Gadget
If NoGadget=GadgetID And EventType()=#PB_EventType_LeftClick
MessageRequester("Bouton OK","T'as cliqué sur le bouton Ok !!!")
EndIf
EndSelect
ForEver
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: comment lister les gadgets
@Dayvid : J'ai du mal à te suivre quand tu postes le même sujet à deux endroits à la fois.
La réponse est sur ce lien http://www.purebasic.fr/french/viewtopi ... 73#p125473
La réponse est sur ce lien http://www.purebasic.fr/french/viewtopi ... 73#p125473
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: comment lister les gadgets
Bonjour, Je suis en train de travailler là dessus,
il me manque juste la gestion d'une liste de gadget dans la structure pour y stocker les gadgets
toute aide est là bien venue.
Liste de pages panelgadget
contenant une liste des gadgets.
il me manque juste la gestion d'une liste de gadget dans la structure pour y stocker les gadgets
toute aide est là bien venue.
Liste de pages panelgadget
contenant une liste des gadgets.
Code : Tout sélectionner
Structure xPanelGadget
Id.l
NumPage.l
StructureUnion
xG.l
EndStructureUnion
EndStructure
NewList xGadget.xPanelGadget()
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
Enumeration
#Panel_0
EndEnumeration
If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
;- Panel0
AddElement( xGadget() )
xGadget()\Id = PanelGadget(#PB_Any, 15, 5, 360, 285)
AddGadgetItem( xGadget()\Id, -1, "Tab 0")
xGadget()\xG = StringGadget( #PB_Any, 5,5,90,20, "StringGadget 1")
xGadget()\NumPage = GetGadgetState( xGadget()\Id )
AddGadgetItem( xGadget()\Id, -1, "Tab 1")
xGadget()\xG = StringGadget( #PB_Any, 5,5,90,20, "StringGadget 2")
xGadget()\NumPage = GetGadgetState( xGadget()\Id )
AddGadgetItem( xGadget()\Id, -1, "Tab 2")
xGadget()\xG = TextGadget( #PB_Any, 5,5,90,20, "TextGadget")
xGadget()\NumPage = GetGadgetState( xGadget()\Id )
AddGadgetItem( xGadget()\Id, -1, "Tab 3")
xGadget()\xG = ComboBoxGadget( #PB_Any, 5,5,90,20)
xGadget()\NumPage = GetGadgetState( xGadget()\Id )
CloseGadgetList()
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #Panel_0
Debug GetGadgetState(#Panel_0)
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow