Resize ListBox

Le
Christophe
Bonjour,

QQun peut-il m'expliquer le comportement d'un listbox lors d'un resize de la
form conteneur.

Je souhaite modifier la hauteur du listbox en fonction de celle de la
fenetre.
Ci-dessous le code qui marche sauf que:
-l'augmentation de hauteur du listbox n'est pas proportionelle elle semble
devoir se fixée automatiquement sur des valeurs arrondies, pourquoi ?

sur load le code calcul l'espace entre le bas du listbox et le bas de la
zone client de la fenetre, à l'affichage cet espace n'est pas constant lors
du resize (nb l'affichage reste tout de même cohérent)

Private Sub Form_Load()
Dim r As Rect
Dim dummy&

<snip>
dummy& = GetClientRect(Me.hwnd, r)
mheight = (r.Bottom - r.Top) - Listappuidissocie.Top /
Screen.TwipsPerPixelY - Listappuidissocie.Height / Screen.TwipsPerPixelY
mwidth = r.Right - r.Left

<snip>

End Sub

Private Sub Form_Resize()
Dim nh&
Dim nw&
Dim r As Rect
Dim dummy&

If mheight <> 0 And mwidth <> 0 Then

dummy& = GetClientRect(Me.hwnd, r)
nh = (r.Bottom - r.Top) - mheight - Listappui.Top / Screen.TwipsPerPixelY

If nh& > 0 Then
Listappuidissocie.Height = nh& * Screen.TwipsPerPixelY
Listexclu.Height = nh& * Screen.TwipsPerPixelY
Listappui.Height = nh& * Screen.TwipsPerPixelY
End If

End If

End Sub


Christophe Vergon
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christophe QUEVAL
Le #14713081
Bonjour,

La hauteur d'une listbox est calculée par rapport à la police de caractère
de celle-ci.

Christophe

"Christophe" news:c62na8$r00$
Bonjour,

QQun peut-il m'expliquer le comportement d'un listbox lors d'un resize de


la
form conteneur.

Je souhaite modifier la hauteur du listbox en fonction de celle de la
fenetre.
Ci-dessous le code qui marche sauf que:
-l'augmentation de hauteur du listbox n'est pas proportionelle elle semble
devoir se fixée automatiquement sur des valeurs arrondies, pourquoi ?

sur load le code calcul l'espace entre le bas du listbox et le bas de la
zone client de la fenetre, à l'affichage cet espace n'est pas constant


lors
du resize (nb l'affichage reste tout de même cohérent)

Private Sub Form_Load()
Dim r As Rect
Dim dummy&

<snip>
dummy& = GetClientRect(Me.hwnd, r)
mheight = (r.Bottom - r.Top) - Listappuidissocie.Top /
Screen.TwipsPerPixelY - Listappuidissocie.Height / Screen.TwipsPerPixelY
mwidth = r.Right - r.Left

<snip>

End Sub

Private Sub Form_Resize()
Dim nh&
Dim nw&
Dim r As Rect
Dim dummy&

If mheight <> 0 And mwidth <> 0 Then

dummy& = GetClientRect(Me.hwnd, r)
nh = (r.Bottom - r.Top) - mheight - Listappui.Top / Screen.TwipsPerPixelY

If nh& > 0 Then
Listappuidissocie.Height = nh& * Screen.TwipsPerPixelY
Listexclu.Height = nh& * Screen.TwipsPerPixelY
Listappui.Height = nh& * Screen.TwipsPerPixelY
End If

End If

End Sub


Christophe Vergon




ng
Le #14713051
Salut,

Par défaut le contrôle ListBox s'arrange, lors d'un resize, pour afficher
complétement tous les items. Pour éviter cela, il suffit de définir la
propriété IntegralHeight à False.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

Christophe
Bonjour,

QQun peut-il m'expliquer le comportement d'un listbox lors d'un
resize de la form conteneur.

Je souhaite modifier la hauteur du listbox en fonction de celle de la
fenetre.
Ci-dessous le code qui marche sauf que:
-l'augmentation de hauteur du listbox n'est pas proportionelle elle
semble devoir se fixée automatiquement sur des valeurs arrondies,
pourquoi ?

sur load le code calcul l'espace entre le bas du listbox et le bas de
la zone client de la fenetre, à l'affichage cet espace n'est pas
constant lors du resize (nb l'affichage reste tout de même cohérent)

Private Sub Form_Load()
Dim r As Rect
Dim dummy&

<snip>
dummy& = GetClientRect(Me.hwnd, r)
mheight = (r.Bottom - r.Top) - Listappuidissocie.Top /
Screen.TwipsPerPixelY - Listappuidissocie.Height /
Screen.TwipsPerPixelY mwidth = r.Right - r.Left

<snip>

End Sub

Private Sub Form_Resize()
Dim nh&
Dim nw&
Dim r As Rect
Dim dummy&

If mheight <> 0 And mwidth <> 0 Then

dummy& = GetClientRect(Me.hwnd, r)
nh = (r.Bottom - r.Top) - mheight - Listappui.Top /
Screen.TwipsPerPixelY

If nh& > 0 Then
Listappuidissocie.Height = nh& * Screen.TwipsPerPixelY
Listexclu.Height = nh& * Screen.TwipsPerPixelY
Listappui.Height = nh& * Screen.TwipsPerPixelY
End If

End If

End Sub


Christophe Vergon


Pascal B.
Le #14713031
Bonjour Christophe,

Pour donner n'importe quelle hauteur à une ListBox, il faut mettre:

ListBox1.IntegralHeight = False


Pascal B.

"Christophe" | Bonjour,
|
| QQun peut-il m'expliquer le comportement d'un listbox lors d'un resize de la
| form conteneur.
|
| Je souhaite modifier la hauteur du listbox en fonction de celle de la
| fenetre.
| Ci-dessous le code qui marche sauf que:
| -l'augmentation de hauteur du listbox n'est pas proportionelle elle semble
| devoir se fixée automatiquement sur des valeurs arrondies, pourquoi ?
|
| sur load le code calcul l'espace entre le bas du listbox et le bas de la
| zone client de la fenetre, à l'affichage cet espace n'est pas constant lors
| du resize (nb l'affichage reste tout de même cohérent)
|
| Private Sub Form_Load()
| Dim r As Rect
| Dim dummy&
|
| <snip>
| dummy& = GetClientRect(Me.hwnd, r)
| mheight = (r.Bottom - r.Top) - Listappuidissocie.Top /
| Screen.TwipsPerPixelY - Listappuidissocie.Height / Screen.TwipsPerPixelY
| mwidth = r.Right - r.Left
|
| <snip>
|
| End Sub
|
| Private Sub Form_Resize()
| Dim nh&
| Dim nw&
| Dim r As Rect
| Dim dummy&
|
| If mheight <> 0 And mwidth <> 0 Then
|
| dummy& = GetClientRect(Me.hwnd, r)
| nh = (r.Bottom - r.Top) - mheight - Listappui.Top / Screen.TwipsPerPixelY
|
| If nh& > 0 Then
| Listappuidissocie.Height = nh& * Screen.TwipsPerPixelY
| Listexclu.Height = nh& * Screen.TwipsPerPixelY
| Listappui.Height = nh& * Screen.TwipsPerPixelY
| End If
|
| End If
|
| End Sub
|
|
| Christophe Vergon
|
|
Christophe
Le #14712981
Merci à tous les trois !

Christophe Vergon

"Christophe" c62na8$r00$
Bonjour,

QQun peut-il m'expliquer le comportement d'un listbox lors d'un resize de


la
form conteneur.

Je souhaite modifier la hauteur du listbox en fonction de celle de la
fenetre.
Ci-dessous le code qui marche sauf que:
-l'augmentation de hauteur du listbox n'est pas proportionelle elle semble
devoir se fixée automatiquement sur des valeurs arrondies, pourquoi ?

sur load le code calcul l'espace entre le bas du listbox et le bas de la
zone client de la fenetre, à l'affichage cet espace n'est pas constant


lors
du resize (nb l'affichage reste tout de même cohérent)

Private Sub Form_Load()
Dim r As Rect
Dim dummy&

<snip>
dummy& = GetClientRect(Me.hwnd, r)
mheight = (r.Bottom - r.Top) - Listappuidissocie.Top /
Screen.TwipsPerPixelY - Listappuidissocie.Height / Screen.TwipsPerPixelY
mwidth = r.Right - r.Left

<snip>

End Sub

Private Sub Form_Resize()
Dim nh&
Dim nw&
Dim r As Rect
Dim dummy&

If mheight <> 0 And mwidth <> 0 Then

dummy& = GetClientRect(Me.hwnd, r)
nh = (r.Bottom - r.Top) - mheight - Listappui.Top / Screen.TwipsPerPixelY

If nh& > 0 Then
Listappuidissocie.Height = nh& * Screen.TwipsPerPixelY
Listexclu.Height = nh& * Screen.TwipsPerPixelY
Listappui.Height = nh& * Screen.TwipsPerPixelY
End If

End If

End Sub


Christophe Vergon




Publicité
Poster une réponse
Anonyme