Page 1 sur 1

[OK] COMBOBOX ouverture via bouton

Publié : ven. 28/déc./2018 20:46
par Ar-S
Salut,
Je ne pense pas que ce soit faisable sans API mais sait on jamais..
J'aimerai qu'une COMBOBOXGADGET s'ouvre lorsque je clique sur un bouton tiers.
Vous avez ça dans votre hotte ?

J'ai eu beau cherché je tombe sur plusieurs pages d'anciens topic traitant de comboboxgadget mais pas de son ouverture.
Merci d'avance

Re: COMBOBOX ouverture via bouton

Publié : ven. 28/déc./2018 21:22
par Christophe
@Ar-s, avec API...

Code : Tout sélectionner

OpenWindow(0,0,0,400,200,"ComboBox",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ComboBoxGadget(0,10,40,100,20)
ButtonGadget(1,120,40,100,20,"Ouverture")

For x=0 To 10
  AddGadgetItem(0,-1,"Item "+Str(x),0,0)
Next

Repeat
  e=WaitWindowEvent()
  Select e
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          Debug GetGadgetText(0)
        Case 1
          SendMessage_(GadgetID(0),#CB_SHOWDROPDOWN,1,1)
      EndSelect
  EndSelect
  
Until e = #PB_Event_CloseWindow


Re: COMBOBOX ouverture via bouton

Publié : ven. 28/déc./2018 22:32
par Ar-S
Parfait.
Merci Christophe

Re: [OK] COMBOBOX ouverture via bouton

Publié : ven. 28/déc./2018 23:36
par PAPIPP
Bonjour Ar-s

Peut être un peu plus simple

Code : Tout sélectionner

OpenWindow(0,0,0,400,200,"ComboBox",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ComboBoxGadget(0,10,40,100,20)
; ButtonGadget(1,120,40,100,20,"Ouverture")
For x=0 To 10
  AddGadgetItem(0,-1,"Item "+Str(x),0,0)
Next

procedure combobox()
  Debug GetGadgetText(Eventgadget())
  debug getgadgettext(0)
endprocedure
BindgadgetEvent(0,@combobox())
Repeat 
Until WaitWindowEvent() = #PB_Event_CloseWindow


A+

Re: [OK] COMBOBOX ouverture via bouton

Publié : sam. 29/déc./2018 1:04
par Ar-S
Salut PAPIPP
ton code n'ouvre pas le combo. Idem si je dé-commente ton button et que je clique..

Re: [OK] COMBOBOX ouverture via bouton

Publié : dim. 30/déc./2018 8:50
par Marc56
Ar-S a écrit :Je ne pense pas que ce soit faisable sans API mais sait on jamais..
J'aimerai qu'une COMBOBOXGADGET s'ouvre lorsque je clique sur un bouton tiers.
Alternative simple: Si les éléments à afficher sont stockés dans une liste et non pas dans le gadget lui-même, alors il suffit d'utiliser une ListeViewGadget que tu affiches et supprimes après usage.

:wink:

Re: [OK] COMBOBOX ouverture via bouton

Publié : dim. 30/déc./2018 8:57
par Ar-S
Pas dans le cadre d'une playliste "longue". Le gadget ne pouvant déborder de la fenêtre.

Re: [OK] COMBOBOX ouverture via bouton

Publié : dim. 30/déc./2018 9:15
par Marc56
Le gadget peut lui-même être dans une fenêtre (sans bordures). Fenêtre positionnée aux coordonnées x et y de l’emplacement initial. Ainsi il peut dépasser de la fenêtre principale. C'est comme cela que j’affichais mon curseur de volume à la verticale). La fenêtre se ferme quelques secondes après avoir perdu le focus de la souris (astuce avec un Timer) ou en cliquant à nouveau sur le bouton.
(Maintenant, j'utilise des containers pour les affichages multiples au même endroit)

:wink:

Re: [OK] COMBOBOX ouverture via bouton

Publié : dim. 30/déc./2018 9:37
par Ar-S
Je sais bien qu'on peut toujours créer une fenêtre invisible et tout le toutim... mais...
Alternative simple
heu... :wink:

je préfère SendMessage_().. Mon lecteur n'étant pas crossplateform

Re: [OK] COMBOBOX ouverture via bouton

Publié : dim. 30/déc./2018 13:34
par Ollivier
@Marc56

Merci d'avoir partagé cette expérience. Si c'est sans saccade ni appel intempestif de disque dur, c'est une bonne astuce.

Ça ne semble pas simple. Mais le contrôle est supérieur : ça permet de modifier les évènements déclencheurs, comme les effets, plus librement...

Ça me fait penser que sous Windows, il y avait une API :
UpdateLayeredWindow() qui permettait de skinner une fenêtre Borderless.

A l'époque, pas d'image avec couche Alpha en PB, donc procédures pour se farcir la couche Alpha.

Le MSDN, qui n'était qu'en Anglais indiquait une fonction non encore complète :
UpdateLayeredWindowEx()

Il y avait des paramètres vides pour rajouter, à l'avenir du Scrolling. Si ça peut aider pour les longues listes semi-transparentes...

[Edit]Après succintes vérifications, il semblerait que les deux variables X et Y de scrolling aient complètement disparu de la circulation. J'ai encore trouvé le moyen de passer pour un hérétique mythomane !