Nbre de Lignes dans un ComboBox

Résolu
nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 - 3 nov. 2006 à 22:45
ta4444 Messages postés 36 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 6 novembre 2006 - 6 nov. 2006 à 13:49
Bonjour !!

Je voudrais savoir s'il existe un moyen de déterminer le nombre de lignes affichées dans un combo ?
Apparement, par défaut, c'est 8 !

Existe-t'il un moyen de le modifier !!

Merci de votre aide !!

Stef

4 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 nov. 2006 à 01:55
Nagstef :
Ce n'est pas possible, il faut faire ton propre UserControl, de type Combo, et dont la propriété "ListRow" (à créer) soit à 10 ou autre selon besoin, au lieu de 8.

Pour info, le combobox en VBA traite cette propriété.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
3 nov. 2006 à 23:12
Salut

tu as les propriétés :
- MaxDrownItem (nb de lignesd visibles des que la liste est deroulée)
- et  ItemHeight

mais ca c'est en VB2005
+
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 nov. 2006 à 00:15
Une comboBox n'est jamais rien d'autre que la "réunion", en un seul contrôle, d'une textbox et d'une listbox.

Une listbox pouvant avoir une hauteur définie par l'utilisateur (ce qui n'est pas le cas d'une combobox), rien ne t'empêche d'utiliser une listbox assortie d'une textbox...et :
1) de définir sa hauteur au minimum dans l'événement activate de la form
2) de "jouer" avec l'événement scroll de la listbox pour en mofifier la hauteur
2) de remettre cette hauteur au minimum au MouseMove de la Form

Quelquechose qui s'inspirerait donc de ceci :

Private Sub Form_Activate()
   For i = 1 To 10
   List1.AddItem i
   Next
   List1.Height = 315
End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If List1.Height > 315 Then List1.Height = 315
End Sub


Private Sub List1_Scroll()
  List1.Height = 3000
End Sub
0
ta4444 Messages postés 36 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 6 novembre 2006
6 nov. 2006 à 13:49
Si c'est possible :

dans un module :
PrivateDeclareFunction MoveWindow Lib"user32" (ByVal hwnd AsLong, _
ByVal x AsLong, ByVal y AsLong, _
ByVal nWidth AsLong, ByVal nHeight AsLong, _
ByVal bRepaint AsLong) AsLong

PublicSub SetCtrlHeight(vCtrl As Control, vHeight AsLong)

Dim xForm As VB.Form, xCont AsObject, XScaleMode As ScaleModeConstants

Set xForm = vCtrl.Parent
Set xCont = vCtrl.Container

Set vCtrl.Container = xForm
XScaleMode = xForm.ScaleMode

'Met ScaleMode du formulaire en Pixels car MoveWindow utilise les pixels
xForm.ScaleMode = vbPixels

MoveWindow vCtrl.hwnd, vCtrl.Left, vCtrl.Top, vCtrl.Width, vHeight, 1

xForm.ScaleMode = XScaleMode
Set vCtrl.Container = xCont

EndSub

Puis :
PrivateSub Form_Load()
Dim xHeight AsLong
xHeight = 180 ' en pixel : affiche 12 lignes en Font MS sans Serif taille 8
Call SetCtrlHeight(Combo1, xHeight)
EndSub
0
Rejoignez-nous