ComboBoxGadget() ne se raffraichie pas

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

ComboBoxGadget() ne se raffraichie pas

Message par Shinao »

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

Re: ComboBoxGadget() ne se raffraichie pas

Message par falsam »

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

Re: ComboBoxGadget() ne se raffraichie pas

Message par Ar-S »

ç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 !

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
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: ComboBoxGadget() ne se raffraichie pas

Message par Shinao »

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

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
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...
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: ComboBoxGadget() ne se raffraichie pas

Message par graph100 »

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
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: ComboBoxGadget() ne se raffraichie pas

Message par falsam »

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 ?
Dans ce cas, le ComboBox est initialisé avec la valeur voulu une fois la séquence d'animation de la fenêtre terminée.

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%
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: ComboBoxGadget() ne se raffraichie pas

Message par Shinao »

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 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...
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
Je regarderais ça demain, API aille, du mal à comprendre.


Si il y a d'autre intervenants, j'suis preneur !

Thanks
Répondre