Ouvrir et fermer combo gadget
Ouvrir et fermer combo gadget
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
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
Win7 (x64) 64 bits Pb 5.72
Re: Ouvrir et fermer combo gadget
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
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

Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Ouvrir et fermer combo gadget
Avec les fonctions PB seules, non. Peut-être avec les API ?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 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
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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Ouvrir et fermer combo gadget
bjr
ou utiliser "DisableGadget(#Gadget, State)"
Cordialement
ou utiliser "DisableGadget(#Gadget, State)"

Cordialement
Re: Ouvrir et fermer combo gadget
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.


Un peu comme le troisième sur la copie écran de l'aide.

Re: Ouvrir et fermer combo gadget
Moi j'ai compris comme marc56
@++
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Ouvrir et fermer combo gadget
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.
Complètement à coté de la plaque papyou utiliser "DisableGadget(#Gadget, State)"

Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Ouvrir et fermer combo gadget
C'est pourtant comme ça que je pratique et ça fonctionne très bien.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Ouvrir et fermer combo gadget
Bonjour,
Cordialement,
GallyHC
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
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Ouvrir et fermer combo gadget
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
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)?
Code : Tout sélectionner
SendMessage_(GadgetID(0),#CB_SHOWDROPDOWN, x,y)
Bonne continuation à tous
Win7 (x64) 64 bits Pb 5.72
Re: Ouvrir et fermer combo gadget
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
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
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).
Cordialement,
GallyHC
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
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Ouvrir et fermer combo gadget
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
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Ouvrir et fermer combo gadget
Non Micoute,
omega souhaite dérouler le combo pas le masqué
@GallyHC
par contre chez moi ton code me renvoie un blue circle
@++
omega souhaite dérouler le combo pas le masqué

@GallyHC
par contre chez moi ton code me renvoie un blue circle

@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz