Modifier taille lors du choix dans Combox ou ListBox
5 réponses
RENAUD Eric
Bonjour,
Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la
possibilté lors de la sélection d'un élément de la liste, un affichage plus
complet de l'item sélectionné (la largeur d'affichage est plus grane que la
taille de la Combobox.
Existe t'il une astuce pour VB ?
D'avance merci
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LE TROLL
Salut,
En gros tu veux un liste peu large, qui quand tu sélectionne un élément, ce dernier ce voit en entièrement (en modifiant ou pas la largeur de la liste?)
Comme je n'ai pas testé mes réponses, c'es sous réserve, mais tu peux essayer: -- Par exemple, si c'est accepté, de modifier la largeur de la liste lorsque qu'un MouseDows est maintenu... -- De mettre un menu surgissant (popup), qui répond au clique de liste et affiche le tout... Etc...
Je vais tester en attendant, vois ce qu'on peut faire :o) -------------
"RENAUD Eric" a écrit dans le message de news:
Bonjour, Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la possibilté lors de la sélection d'un élément de la liste, un affichage plus complet de l'item sélectionné (la largeur d'affichage est plus grane que la taille de la Combobox. Existe t'il une astuce pour VB ? D'avance merci
Salut,
En gros tu veux un liste peu large, qui quand tu sélectionne un élément, ce
dernier ce voit en entièrement (en modifiant ou pas la largeur de la liste?)
Comme je n'ai pas testé mes réponses, c'es sous réserve, mais tu peux
essayer:
-- Par exemple, si c'est accepté, de modifier la largeur de la liste lorsque
qu'un MouseDows est maintenu...
-- De mettre un menu surgissant (popup), qui répond au clique de liste et
affiche le tout...
Etc...
Je vais tester en attendant, vois ce qu'on peut faire :o)
-------------
"RENAUD Eric" <erenaud@fr.fm> a écrit dans le message de news:
uBKz9rjpFHA.616@TK2MSFTNGP15.phx.gbl...
Bonjour,
Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la
possibilté lors de la sélection d'un élément de la liste, un affichage plus
complet de l'item sélectionné (la largeur d'affichage est plus grane que la
taille de la Combobox.
Existe t'il une astuce pour VB ?
D'avance merci
En gros tu veux un liste peu large, qui quand tu sélectionne un élément, ce dernier ce voit en entièrement (en modifiant ou pas la largeur de la liste?)
Comme je n'ai pas testé mes réponses, c'es sous réserve, mais tu peux essayer: -- Par exemple, si c'est accepté, de modifier la largeur de la liste lorsque qu'un MouseDows est maintenu... -- De mettre un menu surgissant (popup), qui répond au clique de liste et affiche le tout... Etc...
Je vais tester en attendant, vois ce qu'on peut faire :o) -------------
"RENAUD Eric" a écrit dans le message de news:
Bonjour, Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la possibilté lors de la sélection d'un élément de la liste, un affichage plus complet de l'item sélectionné (la largeur d'affichage est plus grane que la taille de la Combobox. Existe t'il une astuce pour VB ? D'avance merci
Picalausa François
Hello,
Il est possible de définir la taille de la listbox à l'aide du message CB_SETDROPPEDWIDTH qui demande une taille en pixels : Private Const CB_SETDROPPEDWIDTH = &H160 Private Declare Function SendMessage _ Lib "user32" _ Alias "SendMessageA" _ ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any _ ) _ As Long
Private Sub SetComboListWidth(Combo As Combobox, Width As Long) SendMessage Combo.hwnd, CB_SETDROPPEDWIDTH, Width, ByVal 0& End Sub
On peut en outre déterminer la taille du plus grand texte présent dans la liste: (non optimisé)
Private Function GetComboMaxWidth() As Long Dim ScaledWidth As Single, i As Long, ItemWidth As Single Dim BorderWidth As Single
'Définit par défaut une liste à la largeur du combobox ScaledWidth = Combo1.Width
'Compte 8 pixels de bordure pour chaque item dans la liste BorderWidth = Me.ScaleX(8, 3, Me.ScaleMode)
For i = 0 To Combo1.ListCount - 1 ItemWidth = Me.TextWidth(Combo1.List(i)) + BorderWidth
'Récupère le maximum entre la taille actuelle et la taille de l'item comparé If ItemWidth > ScaledWidth Then ScaledWidth = ItemWidth End If Next i
GetComboMaxWidth = Me.ScaleX(ScaledWidth, Me.ScaleMode, 3) End Function
Voici un exemple d'utilisation des deux méthodes précédentes: Private Sub Form_Load() Combo1.AddItem "Un très très très très très très très très très long texte" Combo1.AddItem "Un très très très très très très très long texte" Combo1.AddItem "Un très très très très très long texte" Combo1.AddItem "Un très très très long texte" Combo1.AddItem "Un très très très très très très très très très très long texte"
SetComboListWidth Combo1, GetComboMaxWidth End Sub
-- Picalausa François
"RENAUD Eric" a écrit dans le message de news:
Bonjour, Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la possibilté lors de la sélection d'un élément de la liste, un affichage plus complet de l'item sélectionné (la largeur d'affichage est plus grane que la taille de la Combobox. Existe t'il une astuce pour VB ? D'avance merci
Hello,
Il est possible de définir la taille de la listbox à l'aide du message
CB_SETDROPPEDWIDTH qui demande une taille en pixels :
Private Const CB_SETDROPPEDWIDTH = &H160
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long
Private Sub SetComboListWidth(Combo As Combobox, Width As Long)
SendMessage Combo.hwnd, CB_SETDROPPEDWIDTH, Width, ByVal 0&
End Sub
On peut en outre déterminer la taille du plus grand texte présent dans la
liste:
(non optimisé)
Private Function GetComboMaxWidth() As Long
Dim ScaledWidth As Single, i As Long, ItemWidth As Single
Dim BorderWidth As Single
'Définit par défaut une liste à la largeur du combobox
ScaledWidth = Combo1.Width
'Compte 8 pixels de bordure pour chaque item dans la liste
BorderWidth = Me.ScaleX(8, 3, Me.ScaleMode)
For i = 0 To Combo1.ListCount - 1
ItemWidth = Me.TextWidth(Combo1.List(i)) + BorderWidth
'Récupère le maximum entre la taille actuelle et la taille de l'item
comparé
If ItemWidth > ScaledWidth Then
ScaledWidth = ItemWidth
End If
Next i
GetComboMaxWidth = Me.ScaleX(ScaledWidth, Me.ScaleMode, 3)
End Function
Voici un exemple d'utilisation des deux méthodes précédentes:
Private Sub Form_Load()
Combo1.AddItem "Un très très très très très très très très très long
texte"
Combo1.AddItem "Un très très très très très très très long texte"
Combo1.AddItem "Un très très très très très long texte"
Combo1.AddItem "Un très très très long texte"
Combo1.AddItem "Un très très très très très très très très très très
long texte"
SetComboListWidth Combo1, GetComboMaxWidth
End Sub
--
Picalausa François
"RENAUD Eric" <erenaud@fr.fm> a écrit dans le message de news:
uBKz9rjpFHA.616@TK2MSFTNGP15.phx.gbl...
Bonjour,
Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la
possibilté lors de la sélection d'un élément de la liste, un affichage
plus complet de l'item sélectionné (la largeur d'affichage est plus grane
que la taille de la Combobox.
Existe t'il une astuce pour VB ?
D'avance merci
Il est possible de définir la taille de la listbox à l'aide du message CB_SETDROPPEDWIDTH qui demande une taille en pixels : Private Const CB_SETDROPPEDWIDTH = &H160 Private Declare Function SendMessage _ Lib "user32" _ Alias "SendMessageA" _ ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any _ ) _ As Long
Private Sub SetComboListWidth(Combo As Combobox, Width As Long) SendMessage Combo.hwnd, CB_SETDROPPEDWIDTH, Width, ByVal 0& End Sub
On peut en outre déterminer la taille du plus grand texte présent dans la liste: (non optimisé)
Private Function GetComboMaxWidth() As Long Dim ScaledWidth As Single, i As Long, ItemWidth As Single Dim BorderWidth As Single
'Définit par défaut une liste à la largeur du combobox ScaledWidth = Combo1.Width
'Compte 8 pixels de bordure pour chaque item dans la liste BorderWidth = Me.ScaleX(8, 3, Me.ScaleMode)
For i = 0 To Combo1.ListCount - 1 ItemWidth = Me.TextWidth(Combo1.List(i)) + BorderWidth
'Récupère le maximum entre la taille actuelle et la taille de l'item comparé If ItemWidth > ScaledWidth Then ScaledWidth = ItemWidth End If Next i
GetComboMaxWidth = Me.ScaleX(ScaledWidth, Me.ScaleMode, 3) End Function
Voici un exemple d'utilisation des deux méthodes précédentes: Private Sub Form_Load() Combo1.AddItem "Un très très très très très très très très très long texte" Combo1.AddItem "Un très très très très très très très long texte" Combo1.AddItem "Un très très très très très long texte" Combo1.AddItem "Un très très très long texte" Combo1.AddItem "Un très très très très très très très très très très long texte"
SetComboListWidth Combo1, GetComboMaxWidth End Sub
-- Picalausa François
"RENAUD Eric" a écrit dans le message de news:
Bonjour, Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la possibilté lors de la sélection d'un élément de la liste, un affichage plus complet de l'item sélectionné (la largeur d'affichage est plus grane que la taille de la Combobox. Existe t'il une astuce pour VB ? D'avance merci
Jean-Marc
"Picalausa François" a écrit dans le message de news:
Hello,
<snip l'excellent code>
Remarquable :-) Je le garde en réserve, c'est excellent.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Picalausa François" <fpicalausa@chez.com> a écrit dans le message de
news:u4ChZmkpFHA.3380@TK2MSFTNGP12.phx.gbl...
Hello,
<snip l'excellent code>
Remarquable :-) Je le garde en réserve, c'est excellent.
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"Picalausa François" a écrit dans le message de news:
Hello,
<snip l'excellent code>
Remarquable :-) Je le garde en réserve, c'est excellent.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
RENAUD Eric
Merci à tous c'est parfait. Salutations Eric "RENAUD Eric" a écrit dans le message de news:
Bonjour, Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la possibilté lors de la sélection d'un élément de la liste, un affichage plus complet de l'item sélectionné (la largeur d'affichage est plus grane que la taille de la Combobox. Existe t'il une astuce pour VB ? D'avance merci
Merci à tous c'est parfait.
Salutations
Eric
"RENAUD Eric" <erenaud@fr.fm> a écrit dans le message de news:
uBKz9rjpFHA.616@TK2MSFTNGP15.phx.gbl...
Bonjour,
Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la
possibilté lors de la sélection d'un élément de la liste, un affichage
plus complet de l'item sélectionné (la largeur d'affichage est plus grane
que la taille de la Combobox.
Existe t'il une astuce pour VB ?
D'avance merci
Merci à tous c'est parfait. Salutations Eric "RENAUD Eric" a écrit dans le message de news:
Bonjour, Sous Excel, je peux avoir avec la propriété ListWidth d'une Combobox la possibilté lors de la sélection d'un élément de la liste, un affichage plus complet de l'item sélectionné (la largeur d'affichage est plus grane que la taille de la Combobox. Existe t'il une astuce pour VB ? D'avance merci
hken
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise le code que tu as donnés pour développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais connais-tu une manière de choisir soit un développement à gauche sous à droite de cette dropbox ??? Comme le fait Windows sur un click droit trop proche de la bordure de l'écran. Si pas assez de place à droite... il le fait à gauche !!! Merci d'avance à ceux et/ou celles qui me répondront...
-- Merci d''avance pour vos réponses !!
Bonjour à tous et à toutes.
Alors voilà une petite question.
J'utilise le code que tu as donnés pour développer la largeur de la ComboBox
(dropBox), ça fonctionne parfaitement. Mais connais-tu une manière de choisir
soit un développement à gauche sous à droite de cette dropbox ???
Comme le fait Windows sur un click droit trop proche de la bordure de
l'écran. Si pas assez de place à droite... il le fait à gauche !!!
Merci d'avance à ceux et/ou celles qui me répondront...
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise le code que tu as donnés pour développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais connais-tu une manière de choisir soit un développement à gauche sous à droite de cette dropbox ??? Comme le fait Windows sur un click droit trop proche de la bordure de l'écran. Si pas assez de place à droite... il le fait à gauche !!! Merci d'avance à ceux et/ou celles qui me répondront...