Page 1 sur 1

[v4 beta 9] GadgetHeight et ComboBox [Résolu]

Publié : mer. 05/avr./2006 7:27
par olivier
La hauteur d'une combobox est de 21, même pour une combo initialisée à 200, Est-ce normal , ou est-ce un Bug ?

Si ce n'est pas un bug, comment avoir la hauteur d'une combo (ici :200)

Bonne journée

Code : Tout sélectionner

OpenWindow (0,10,10,200,200, "ess", #PB_Window_SystemMenu  )
CreateGadgetList ( WindowID (0))
ComboBoxGadget(1,10,10,100,200)
Debug GadgetHeight(1)
Repeat
     event= WaitWindowEvent ()
     Select event
          Case #PB_Event_Gadget ; *****************Choix d'un bouton
               Select EventGadget()
 
               EndSelect

     EndSelect
Until event=#WM_CLOSE

Publié : mer. 05/avr./2006 10:42
par Dr. Dri
Ce qu'il faudrait c'est avoir des fonctions GetGadgetInnerWidth/Height. La taille du combobox dépendra de la police en cours et c'est pas le seul à avoir deux types de taille.

Y'a aussi le panelgadget, le scrollareagadget, le mdigadget et peut-être d'autres...

Dri

Publié : mer. 05/avr./2006 13:56
par Chris
olivier a écrit :Si ce n'est pas un bug, comment avoir la hauteur d'une combo (ici :200)
Pour la réponse à la seconde question (si c'est une question ) :lol: , je fais comme ça.

Code : Tout sélectionner

Structure COMBOBOXINFO
  cbSize.l
  rcItem.RECT
  rcButton.RECT
  stateButton.l
  hwndCombo.l
  hwndItem.l
  hwndList.l
EndStructure
Info.COMBOBOXINFO\cbSize = SizeOf(COMBOBOXINFO)

#CB_GETCOMBOBOXINFO = $0164

OpenWindow (0,10,10,200,200, "ess", #PB_Window_SystemMenu  )
CreateGadgetList ( WindowID (0))
ComboBoxGadget(1,10,10,100,200)

; ***** Coordonnées du combo *****
SendMessage_(GadgetID(1), #CB_GETCOMBOBOXINFO, 0, @Info)
SendMessage_(Info\hwndCombo, #CB_GETDROPPEDCONTROLRECT, 0, Re.RECT)
; ********************************

Debug "Hauteur du combo = " + Str(Re\bottom-Re\top + Info\rcItem\top)


Repeat
  event= WaitWindowEvent ()
  Select event
    Case #PB_Event_Gadget ; *****************Choix d'un bouton
      Select EventGadget()
        
      EndSelect
      
  EndSelect
Until event=#WM_CLOSE

Publié : mer. 05/avr./2006 14:07
par olivier
Merci Chris

Mais il ne marche pas trop ton code chez moi ! Cela donne 0 comme hauteur.

Mais te bile pas je me suis débrouillé autrement. :wink:

Merci encore

a+
Stef

Publié : mer. 05/avr./2006 14:17
par Chris
CB_GETCOMBOBOXINFO ne fonctionne que sous XP, il me semble!

Par contre, d'après le SDK, la fonction équivalente fonctionne sous 98.

Code : Tout sélectionner

GetComboBoxInfo_(GadgetID(1), @Info)

Publié : mer. 05/avr./2006 14:42
par olivier
Merci Chris 8)

Publié : mer. 05/avr./2006 20:02
par LeCyb
La doc dit:

"...la 'Hauteur' spécifie la hauteur de la liste déroulante quand elle est visible."

Pour moi y'a donc aucun bug. Merci Chris pour l'astuce :)