Ouvrir et fermer combo gadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Ouvrir et fermer combo gadget

Message 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
Win7 (x64) 64 bits Pb 5.72
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Ouvrir et fermer combo gadget

Message 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 :)
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.
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Ouvrir et fermer combo gadget

Message 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
:wink:
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Ouvrir et fermer combo gadget

Message 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.
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 !
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Ouvrir et fermer combo gadget

Message par kernadec »

bjr
ou utiliser "DisableGadget(#Gadget, State)" :mrgreen:

Cordialement
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Ouvrir et fermer combo gadget

Message 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 ? :wink:

Un peu comme le troisième sur la copie écran de l'aide.
Image
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Ouvrir et fermer combo gadget

Message par venom »

Moi j'ai compris comme marc56






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Ouvrir et fermer combo gadget

Message 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 :mrgreen:
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.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Ouvrir et fermer combo gadget

Message par Micoute »

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 !
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Ouvrir et fermer combo gadget

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Ouvrir et fermer combo gadget

Message 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)?

Code : Tout sélectionner

SendMessage_(GadgetID(0),#CB_SHOWDROPDOWN, x,y)
Merci encore

Bonne continuation à tous
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Naheulf
Messages : 193
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: Ouvrir et fermer combo gadget

Message 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
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Ouvrir et fermer combo gadget

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Ouvrir et fermer combo gadget

Message 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
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 !
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Ouvrir et fermer combo gadget

Message par venom »

Non Micoute,
omega souhaite dérouler le combo pas le masqué :wink:

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






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