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.

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)

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