comment lister les gadgets

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Cagou77
Messages : 18
Inscription : mer. 17/févr./2010 7:19
Localisation : Betheny, Reims

comment lister les gadgets

Message par Cagou77 »

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.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: comment lister les gadgets

Message par MLD »

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
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: comment lister les gadgets

Message par boddhi »

Cagou77 a écrit :...mais lors d'un changement de page...
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 :comment lister tous les gadgets d'une fenêtre
Ton nombre de gadgets est-il déterminé dès le départ ???
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....
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: comment lister les gadgets

Message par Ar-S »

Tiens je croyais qu'il fallait soit énumérer de la sorte

Code : Tout sélectionner

Enumération
#Fenetre 
#Gadget1
#gadget2
EndEnumeration

soit

#Fenetre = 0;
#Gadget1=1

etc..
Quelqu'un peut confirmer ?
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
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: comment lister les gadgets

Message par boddhi »

@Ar-S
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
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...
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: comment lister les gadgets

Message par Ar-S »

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

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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: comment lister les gadgets

Message par Backup »

....................
Dernière modification par Backup le dim. 20/mars/2011 12:54, modifié 1 fois.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: comment lister les gadgets

Message par MLD »

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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: comment lister les gadgets

Message par Backup »

.................
Dernière modification par Backup le dim. 20/mars/2011 12:55, modifié 1 fois.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: comment lister les gadgets

Message par boddhi »

Il y aussi cette méthode là pour éviter que des constantes prennent la même valeur :
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
On peut donc avoir :

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
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: comment lister les gadgets

Message par dayvid »

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 :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: comment lister les gadgets

Message par boddhi »

@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) :

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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: comment lister les gadgets

Message par falsam »

@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
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%
Cagou77
Messages : 18
Inscription : mer. 17/févr./2010 7:19
Localisation : Betheny, Reims

Re: comment lister les gadgets

Message par Cagou77 »

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.

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
Répondre