Page 1 sur 2
Ouvrir et fermer combo gadget
Publié : jeu. 27/août/2020 22:42
par omega
Bonjour,
Existe t-il un moyen de pouvoir ouvrir et fermer un combo box gadget (Cela me permet d'afficher la liste des produits qui commence par le ou les caractères saisis par l'utilisateur.)
Merci
Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 7:15
par Shadow
Salut, je pense que tu as dû oublier de dire des choses...
Car tu sais qu'il suffis de cliquer sur la flèche non ?
Je ne connais pas de moyen de l'ouvrir autrement.
Pourquoi tu veux l'ouvrir autrement ?
Tu peu choisir l'élément avec un SetGadgetState()
mais tous ça tu le sais déjà non ?
Tous ça c'est dans l'aide de PB mon cher

Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 7:34
par Marc56
omega a écrit :
Existe t-il un moyen de pouvoir ouvrir et fermer un combo box gadget (Cela me permet d'afficher la liste des produits qui commence par le ou les caractères saisis par l'utilisateur.)
Avec les fonctions PB seules, non. Peut-être avec les API ?
Avec PB tu peux par contre sélectionner l'élément affiché (
SetGadgetState) et aussi utiliser le clavier pour accéder directement aux éléments (à condition que le focus soit dessus (
SetActiveGadget) et que le combo ne soit pas en mode édition (pas #PB_ComboBox_Editable)
Code : Tout sélectionner
OpenWindow(0, 0, 0, 270, 180, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ComboBoxGadget(0, 10, 10, 250, 21)
For a = 1 To 5
AddGadgetItem(0, -1, Chr(65 + a) + " Elément " + Str(a))
Next
SetActiveGadget(0)
SetGadgetState(0, 2)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 7:43
par Micoute
La meilleure méthode est d'utiliser HideGadget(#Cmb, 1) pour le cacher et HideGadget(#Cmb, 0) pour le montrer, on ne peut pas faire plus simple.
Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 7:50
par kernadec
bjr
ou utiliser "DisableGadget(#Gadget, State)"
Cordialement
Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 7:53
par Marc56
Je pense que ce que omega souhaite, c'est afficher le combo
déroulé et positionné sur le premier élément qui correspond au choix automatiquement ?
Un peu comme le troisième sur la copie écran de l'aide.

Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 15:25
par venom
Moi j'ai compris comme marc56
@++
Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 15:39
par Shadow
Micoute a écrit :La meilleure méthode est d'utiliser HideGadget(#Cmb, 1) pour le cacher et HideGadget(#Cmb, 0) pour le montrer, on ne peut pas faire plus simple.
ou utiliser "DisableGadget(#Gadget, State)"
Complètement à coté de la plaque papy

Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 17:38
par Micoute
C'est pourtant comme ça que je pratique et ça fonctionne très bien.
Re: Ouvrir et fermer combo gadget
Publié : ven. 28/août/2020 21:53
par GallyHC
Bonjour,
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 270, 180, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ComboBoxGadget(0, 10, 10, 250, 21, #PB_ComboBox_Editable)
For a = 1 To 5
AddGadgetItem(0, -1,"Elément de liste déroulante " + Str(a))
Next
; A mettre pour l'ouverture du combo.
SendMessage_(GadgetID(0),#CB_SHOWDROPDOWN, 1, 0)
; A mettre pour la fermeture du combo.
;SendMessage_(GadgetID(0),#CB_SHOWDROPDOWN, 0, 0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Cordialement,
GallyHC
Re: Ouvrir et fermer combo gadget
Publié : sam. 29/août/2020 0:29
par omega
Salut et merci à tous
Dommage que la plupart d'entre vous sont hors sujet (A Part GallyHC dont le code proposé fonctionne parfaitement)
Je m'explique encore une fois plus clairement cette fois:
Je voudrais ouvrir le combobox en codant en pb et le refermer aussi en codant (sans utiliser la souris). Pour cela, je vais essayer d'utiliser le code de GallyHC qui semble être la solution que je cherche. Merci quand même à tous et surtout à GallyHC pour le partage.
@GallyHC
Puis-je connaître la signification de ces 2 variables (x et y)?
Merci encore
Bonne continuation à tous
Re: Ouvrir et fermer combo gadget
Publié : sam. 29/août/2020 6:10
par Naheulf
Bah c'est juste la transposition en Purebasic de
la fonction SendMessage() de la WinApi. En l’occurrence "x" correspond au paramètre "wParam" et y à "lParam".
Pour connaître l'(in)utilité de ces deux paramètres il faut aller voir
la doc de CB_SHOWDROPDOWN
Re: Ouvrir et fermer combo gadget
Publié : sam. 29/août/2020 8:57
par GallyHC
Bonjour,
Pour les questions "Naheulf" à répondu. Par contre si cela est pour une utilisation clavier, pour que le combo soit actif directement, il faut lui donner le Focus (Voir code).
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 270, 180, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ComboBoxGadget(0, 10, 10, 250, 21, #PB_ComboBox_Editable)
For a = 1 To 5
AddGadgetItem(0, -1,"Elément de liste déroulante " + Str(a))
Next
ComboBoxGadget(1, 10, 36, 250, 21, #PB_ComboBox_Editable)
; Mettre le focus sur le combo.
SetActiveGadget(0)
; A mettre pour l'ouverture du combo.
SendMessage_(GadgetID(0),#CB_SHOWDROPDOWN, 1, 0)
; A mettre pour la fermeture du combo.
;SendMessage_(GadgetID(0),#CB_SHOWDROPDOWN, 0, 0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Cordialement,
GallyHC
Re: Ouvrir et fermer combo gadget
Publié : sam. 29/août/2020 9:10
par Micoute
Moi ma solution état:
Code : Tout sélectionner
ComboBoxAffichee.L = #True
OpenWindow(0, 0, 0, 270, 190, "Afficher/Cacher ComboBox", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ComboBoxGadget(0, 10, 40, 250, 20, #PB_ComboBox_Editable)
ButtonGadget(1, 70, 10, 120, 20, "Cacher ComboBox")
For i = 1 To 9
AddGadgetItem(0, -1, "Entrée " + Str(i))
Next i
SetGadgetState(0, 6)
ComboBoxHandle = GadgetID(0)
ComboBoxEditControlHandle = GetWindow_(ComboBoxHandle, #GW_CHILD)
Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent = #PB_Event_Gadget
If EventGadget() = 1
If ComboBoxAffichee
HideGadget(0, #True)
SetGadgetText(1, "Afficher ComboBox")
EnableWindow_(ComboBoxEditControlHandle, #True)
ComboBoxAffichee = #False
Else
HideGadget(0, #False)
SetGadgetText(1, "Cacher ComboBox")
ComboBoxAffichee = #True
EndIf
EndIf
EndIf
Until WindowEvent = #PB_Event_CloseWindow
Re: Ouvrir et fermer combo gadget
Publié : sam. 29/août/2020 9:48
par venom
Non Micoute,
omega souhaite
dérouler le combo pas le masqué
@GallyHC
par contre chez moi ton code me renvoie un
blue circle
@++