Bonjour,
Je me suis enfin décidé à vous demander de l'aide, voici mon problème :
J'ai un ComboBoxGadget() (oui, très puissant et avancé mon code), dont on ajoute des Items (je sais je sais ça va loin).
Après j'ai un SetGadgetState(#ComboLangue, 0) donc il choisit la première langue qui est disponible...
Or, il ne met que le state que lorsque je passe le curseur sur mon ComboBox, quand il y a un évènement dessus en faite... sauf que je ne rentre pas dans la boucle évènementielle, pas de case ni rien sur lui pour l'instant, je l'ai mis là ou il y a tout mes gadgets...
J'ai testé un : While WindowEvent() : Wend qui à marché pour certaines choses mais ça ne refresh pas ma fenêtre cette fois-ci.
Le problème vient de moi ou c'est PB qui ne gère pas ça ?
Thanks
ComboBoxGadget() ne se raffraichie pas
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: ComboBoxGadget() ne se raffraichie pas
N'ayant pas tout à fait compris. Je poste un début de code que tu pourrais compléter pour essayer de comprendre ton souci 

Code : Tout sélectionner
Enumeration
#Window
#HoMonCombooooo
EndEnumeration
OpenWindow(#Window,0,0,500,400,"Test combo", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
ComboBoxGadget(#HoMonCombooooo, 20, 20, 200, 22)
AddGadgetItem(#HoMonCombooooo, -1, "Allemand")
AddGadgetItem(#HoMonCombooooo, -1, "Anglais")
AddGadgetItem(#HoMonCombooooo, -1, "Espagnol")
AddGadgetItem(#HoMonCombooooo, -1, "Français")
SetGadgetState(#HoMonCombooooo, 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
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: ComboBoxGadget() ne se raffraichie pas
ça vient pas de PB ... allons...
L'explication de ton soucis étant incompréhensible pour ma part, voilà un exemple ou tu peux ajouter une langue tout et afficher dans un string l'élément sélectionné:
si ton explication est aussi vaseuse et si tu ne mets pas de code la prochaine fois, tu vas te sentir seul !
L'explication de ton soucis étant incompréhensible pour ma part, voilà un exemple ou tu peux ajouter une langue tout et afficher dans un string l'élément sélectionné:
si ton explication est aussi vaseuse et si tu ne mets pas de code la prochaine fois, tu vas te sentir seul !
Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration
#ComboLangue
#Button
#INFO
EndEnumeration
If OpenWindow(#Window_0, 512, 174, 400, 120, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
ComboBoxGadget(#ComboLangue, 10, 80, 380, 25)
AddGadgetItem(#ComboLangue, -1, "FR")
AddGadgetItem(#ComboLangue, -1, "UK")
AddGadgetItem(#ComboLangue, -1, "DE")
AddGadgetItem(#ComboLangue, -1, "ES")
numList = GetGadgetState(#ComboLangue) ; trouve la position
SetGadgetState(#ComboLangue,0); on se place sur l'élément en position 0 donc : FR
ButtonGadget(#Button, 5, 5, 390, 25, "Ajouter Italie")
StringGadget(#INFO, 6, 40, 385, 25, "Infos")
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #ComboLangue
SetGadgetText(#INFO,GetGadgetItemText(#ComboLangue,GetGadgetState(#ComboLangue)))
Case #Button
Nbr = CountGadgetItems(#ComboLangue) ; Compte le nbr de langue
numList = GetGadgetState(#ComboLangue) ; trouve la position
Name$ = GetGadgetItemText(#ComboLangue,numList) ; Nom de la langue en cours
numList+1 ; on se positionne apres l'élément selectionné
AddGadgetItem(#ComboLangue, numList, "IT")
SetGadgetState(#ComboLangue,numList)
SetGadgetText(#INFO,GetGadgetItemText(#ComboLangue,GetGadgetState(#ComboLangue)))
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
CloseWindow(#Window_0)
Break
EndSelect
EndSelect
ForEver
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: ComboBoxGadget() ne se raffraichie pas
J'ai compris d'ou vient mon erreur, elle se situe au niveau de la fonction AnimateWindow_ (api) :
Mon erreur produisait ça (en utilisant le code de falsam) :
Or si on met le SetGadgetState() après le AnimateWindow_(), aucun problème...
Comment puis-je garder mon AnimateWindow tout en ayant mon state directement ?
Sans modifier le delay de la fonction, ça enlève tout son charme...
merci pour vos réponses
Edit : j'ai même juste à réduire puis agrandir la fenêtre pour que mon State(0) s'active...
Mon erreur produisait ça (en utilisant le code de falsam) :
Code : Tout sélectionner
Enumeration
#Window
#HoMonCombooooo
EndEnumeration
OpenWindow(#Window,0,0,500,400,"Test combo", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible)
ComboBoxGadget(#HoMonCombooooo, 20, 20, 200, 22)
AddGadgetItem(#HoMonCombooooo, -1, "Allemand")
AddGadgetItem(#HoMonCombooooo, -1, "Anglais")
AddGadgetItem(#HoMonCombooooo, -1, "Espagnol")
AddGadgetItem(#HoMonCombooooo, -1, "Français")
SetGadgetState(#HoMonCombooooo, 0)
AnimateWindow_(WindowID(#Window), 1000, #AW_BLEND | #AW_ACTIVATE)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Comment puis-je garder mon AnimateWindow tout en ayant mon state directement ?
Sans modifier le delay de la fonction, ça enlève tout son charme...
merci pour vos réponses
Edit : j'ai même juste à réduire puis agrandir la fenêtre pour que mon State(0) s'active...
Re: ComboBoxGadget() ne se raffraichie pas
Regarde du coté de sendmessage_() et windowrefresh, ou repaint, (c'est des constantes dans les API)
fait carrement une recherche sur le raffraichissement des fenetres sur le MSDN de grosoft
fait carrement une recherche sur le raffraichissement des fenetres sur le MSDN de grosoft
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel
)
Mon site : CeriseCode (Attention Chantier perpétuel

- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: ComboBoxGadget() ne se raffraichie pas
Dans ce cas, le ComboBox est initialisé avec la valeur voulu une fois la séquence d'animation de la fenêtre terminée.Shinao a écrit :Or si on met le SetGadgetState() après le AnimateWindow_(), aucun problème...
Comment puis-je garder mon AnimateWindow tout en ayant mon state directement ?
Toi ce que tu souhaites c'est que durant la séquence d'animation de la fenêtre, le combo soit au préalable initialisé avec la valeur souhaité comme le montre l'exemple avec une autre valeur d'animation.
Code : Tout sélectionner
Enumeration
#Window
#HoMonCombooooo
EndEnumeration
OpenWindow(#Window,0,0,500,400,"Test combo", #PB_Window_ScreenCentered| #PB_Window_Invisible|#PB_Window_SystemMenu )
ComboBoxGadget(#HoMonCombooooo, 20, 20, 200, 22)
AddGadgetItem(#HoMonCombooooo, -1, "Allemand")
AddGadgetItem(#HoMonCombooooo, -1, "Anglais")
AddGadgetItem(#HoMonCombooooo, -1, "Espagnol")
AddGadgetItem(#HoMonCombooooo, -1, "Français")
SetGadgetState(#HoMonCombooooo, 0)
AnimateWindow_(WindowID(#Window), 1000, #AW_CENTER)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
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: ComboBoxGadget() ne se raffraichie pas
Je voudrais qu'il soit au préalable initialisée mais avec le même rendu au niveau de l'animation... d'ailleurs d'après ton code seul cette animation fais "bugger" mon ComboBox...Toi ce que tu souhaites c'est que durant la séquence d'animation de la fenêtre, le combo soit au préalable initialisé avec la valeur souhaité comme le montre l'exemple avec une autre valeur d'animation.
Je regarderais ça demain, API aille, du mal à comprendre.Regarde du coté de sendmessage_() et windowrefresh, ou repaint, (c'est des constantes dans les API)
fait carrement une recherche sur le raffraichissement des fenetres sur le MSDN de grosoft
Si il y a d'autre intervenants, j'suis preneur !
Thanks