Bonjour à tous et à toutes.
Alors voilà une petite question.
J'utilise un bout de code qui permet de développer la largeur de la ComboBox
(dropBox), ça fonctionne parfaitement. Mais comment faire pour 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 un bout de code qui permet de développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire pour 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...
peut être en testant la valeur de Combo1.Left + Combo1.Width ?
si cette valeur est > Form1.Width, alors tu développes à gauche ....
--
Adresse invalide Merci de répondre sur le forum ... http://scraper.chez.tiscali.fr
scraper
Bonjour hken, dans le message
news:B36B3AAB-CA30-44F8-B2DE-4E7C7E7F9FBE@microsoft.com
tu disais :
Bonjour à tous et à toutes.
Alors voilà une petite question.
J'utilise un bout de code qui permet de développer la largeur de la
ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire
pour 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...
peut être en testant la valeur de Combo1.Left + Combo1.Width ?
si cette valeur est > Form1.Width, alors tu développes à gauche ....
--
Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez.tiscali.fr
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise un bout de code qui permet de développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire pour 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...
peut être en testant la valeur de Combo1.Left + Combo1.Width ?
si cette valeur est > Form1.Width, alors tu développes à gauche ....
--
Adresse invalide Merci de répondre sur le forum ... http://scraper.chez.tiscali.fr
scraper
hken
Merci à toi d'avoir répondu..!!
C'est justement cela que je ne sais pas faire..!!! Faire le développement sur la gauche !!! Même si je place ma ComboBox à fond sur la droite... ba mon développement se fait quand même sur la droite !!!
Après je pense que je ferais comme tu dis pour savoir vers quel côtè je vais développer...
Je cherche partout et nobody pour me répondre...!!! P't'être que c'est pas possible finalement ???? J'espère que si !!!
Merci à toi d'avoir répondu..!!
C'est justement cela que je ne sais pas faire..!!!
Faire le développement sur la gauche !!!
Même si je place ma ComboBox à fond sur la droite... ba mon développement se
fait quand même sur la droite !!!
Après je pense que je ferais comme tu dis pour savoir vers quel côtè je vais
développer...
Je cherche partout et nobody pour me répondre...!!!
P't'être que c'est pas possible finalement ????
J'espère que si !!!
C'est justement cela que je ne sais pas faire..!!! Faire le développement sur la gauche !!! Même si je place ma ComboBox à fond sur la droite... ba mon développement se fait quand même sur la droite !!!
Après je pense que je ferais comme tu dis pour savoir vers quel côtè je vais développer...
Je cherche partout et nobody pour me répondre...!!! P't'être que c'est pas possible finalement ???? J'espère que si !!!
hken
Voici le bout de code : (trouvé sur la FAQ)
'Celui-ci dans le module de la Form. Private Sub Form_Load() Combo1.AddItem "Jean" Combo1.AddItem "Pierre" 'Combo1.AddItem "La largeur est de 350, pour diminuer ou augmenter, changer ce chiffre." '70 caractères LargeurCombo Combo1.hwnd, 700 End Sub
'Celui-ci dans un module 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 Public Const CB_SETDROPPEDWIDTH = &H160
Public Sub LargeurCombo(hwnd As Long, largeur As Long) SendMessage hwnd, CB_SETDROPPEDWIDTH, largeur, ByVal 0 End Sub
Il fonctionne à la perfection...
Je sais qu'il y a plein d'autres constantes pour les ComboBox... Et je les ais toutes essayées !!! (sauf erreur de ma part) Et aucunes ne fonctionnent pour que le développement s'effectue sur la gauche !!!
Voili voilou... ci quelqu'un connait une astuce !!
Merci d'avance...
Voici le bout de code : (trouvé sur la FAQ)
'Celui-ci dans le module de la Form.
Private Sub Form_Load()
Combo1.AddItem "Jean"
Combo1.AddItem "Pierre"
'Combo1.AddItem "La largeur est de 350, pour diminuer ou augmenter, changer
ce chiffre." '70 caractères
LargeurCombo Combo1.hwnd, 700
End Sub
'Celui-ci dans un module
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
Public Const CB_SETDROPPEDWIDTH = &H160
Public Sub LargeurCombo(hwnd As Long, largeur As Long)
SendMessage hwnd, CB_SETDROPPEDWIDTH, largeur, ByVal 0
End Sub
Il fonctionne à la perfection...
Je sais qu'il y a plein d'autres constantes pour les ComboBox...
Et je les ais toutes essayées !!! (sauf erreur de ma part)
Et aucunes ne fonctionnent pour que le développement s'effectue sur la
gauche !!!
Voili voilou... ci quelqu'un connait une astuce !!
'Celui-ci dans le module de la Form. Private Sub Form_Load() Combo1.AddItem "Jean" Combo1.AddItem "Pierre" 'Combo1.AddItem "La largeur est de 350, pour diminuer ou augmenter, changer ce chiffre." '70 caractères LargeurCombo Combo1.hwnd, 700 End Sub
'Celui-ci dans un module 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 Public Const CB_SETDROPPEDWIDTH = &H160
Public Sub LargeurCombo(hwnd As Long, largeur As Long) SendMessage hwnd, CB_SETDROPPEDWIDTH, largeur, ByVal 0 End Sub
Il fonctionne à la perfection...
Je sais qu'il y a plein d'autres constantes pour les ComboBox... Et je les ais toutes essayées !!! (sauf erreur de ma part) Et aucunes ne fonctionnent pour que le développement s'effectue sur la gauche !!!
Voili voilou... ci quelqu'un connait une astuce !!
Merci d'avance...
scraper
Bonjour hken, dans le message news: tu disais :
Merci à toi d'avoir répondu..!!
C'est justement cela que je ne sais pas faire..!!! Faire le développement sur la gauche !!! Même si je place ma ComboBox à fond sur la droite... ba mon développement se fait quand même sur la droite !!!
Après je pense que je ferais comme tu dis pour savoir vers quel côtè je vais développer...
Je cherche partout et nobody pour me répondre...!!! P't'être que c'est pas possible finalement ???? J'espère que si !!!
je sais pas si c'est possible .... mais sinon, il te reste à déplacer toi même ton combo en jouant sur Combo1.Left (et à le redimensionner toi même avec Combo1.Width,éventuellement ?)
--
Adresse invalide Merci de répondre sur le forum ... http://scraper.chez.tiscali.fr
scraper
Bonjour hken, dans le message
news:9E3601FC-332B-4DB1-8E5E-65BE659A7BCA@microsoft.com
tu disais :
Merci à toi d'avoir répondu..!!
C'est justement cela que je ne sais pas faire..!!!
Faire le développement sur la gauche !!!
Même si je place ma ComboBox à fond sur la droite... ba mon
développement se fait quand même sur la droite !!!
Après je pense que je ferais comme tu dis pour savoir vers quel côtè
je vais développer...
Je cherche partout et nobody pour me répondre...!!!
P't'être que c'est pas possible finalement ????
J'espère que si !!!
je sais pas si c'est possible ....
mais sinon, il te reste à déplacer toi même ton combo en jouant sur
Combo1.Left
(et à le redimensionner toi même avec Combo1.Width,éventuellement ?)
--
Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez.tiscali.fr
C'est justement cela que je ne sais pas faire..!!! Faire le développement sur la gauche !!! Même si je place ma ComboBox à fond sur la droite... ba mon développement se fait quand même sur la droite !!!
Après je pense que je ferais comme tu dis pour savoir vers quel côtè je vais développer...
Je cherche partout et nobody pour me répondre...!!! P't'être que c'est pas possible finalement ???? J'espère que si !!!
je sais pas si c'est possible .... mais sinon, il te reste à déplacer toi même ton combo en jouant sur Combo1.Left (et à le redimensionner toi même avec Combo1.Width,éventuellement ?)
--
Adresse invalide Merci de répondre sur le forum ... http://scraper.chez.tiscali.fr
scraper
hken
Comment ça en jouant sur Combo1.Left ??
J'ai déjà déplacé la ComboBox et ça ne fait rien !!!! Une partie de la dropBox disparait de l'écran... c'est tout ce que ça fait malheureusement !!! :(
Comment ça en jouant sur Combo1.Left ??
J'ai déjà déplacé la ComboBox et ça ne fait rien !!!!
Une partie de la dropBox disparait de l'écran... c'est tout ce que ça fait
malheureusement !!! :(
J'ai déjà déplacé la ComboBox et ça ne fait rien !!!! Une partie de la dropBox disparait de l'écran... c'est tout ce que ça fait malheureusement !!! :(
msnews.microsoft.com
Salut,
Bien qu'on t'ai passé un bout de code qui manifestement fonctionne mais ne tient pas compte de l'emplacement, un combo a une liste, il doit en permanence avoir la largeur de la plus grande des ses lignes, il ne change pas de taille en fonction de la ligne présenté, ça pourrait même faire bizarre... Et pour avoir la plus grande taille, suffit dans les propriétés de l'écrire à la main pour le régler (avec la police voulue)... ----------------- Sinon, sur le principe, je n'ai pas testé, tu peux plus simplement (si ça marche lors de l'exécution), noter la taille d'un caractère dim taille as long taille = ???
Puis tu calcule la longueur de la chaîne avec X = Len(combo1.list(i))
Puis tu fais combo1.width = (X * taille) + les bords en largeur
Ensuite pour le positionner, tu modifies son Left suivant les marges de la feuille, soit en gros: dim leftMini leftMini = form1.Widht - longueur maximum du combo et if combo1.left > leftMini then combo1.left = leftMini
NB, j'ai fait tout de tête, sans rien tester, il y a peut être des mises au point à faire (pas le temps, désolé), et voir si c'est accepté en cours d'interprétation (je ne sais pas), ça te sera dit par l'interprétateur (teste juste combo1.left = 200, si ça plante tu sauras que ce n'est pas possible rapidement)... ------------------------
"hken" a écrit dans le message de news:
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise un bout de code qui permet de développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire pour 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 !!
Salut,
Bien qu'on t'ai passé un bout de code qui manifestement fonctionne mais
ne tient pas compte de l'emplacement, un combo a une liste, il doit en
permanence avoir la largeur de la plus grande des ses lignes, il ne change
pas de taille en fonction de la ligne présenté, ça pourrait même faire
bizarre...
Et pour avoir la plus grande taille, suffit dans les propriétés de l'écrire
à la main pour le régler (avec la police voulue)...
-----------------
Sinon, sur le principe, je n'ai pas testé, tu peux plus simplement (si ça
marche lors de l'exécution), noter la taille d'un caractère
dim taille as long
taille = ???
Puis tu calcule la longueur de la chaîne avec
X = Len(combo1.list(i))
Puis tu fais combo1.width = (X * taille) + les bords en largeur
Ensuite pour le positionner, tu modifies son Left suivant les marges de la
feuille, soit en gros:
dim leftMini
leftMini = form1.Widht - longueur maximum du combo
et
if combo1.left > leftMini then combo1.left = leftMini
NB, j'ai fait tout de tête, sans rien tester, il y a peut être des mises au
point à faire (pas le temps, désolé), et voir si c'est accepté en cours
d'interprétation (je ne sais pas), ça te sera dit par l'interprétateur
(teste juste combo1.left = 200, si ça plante tu sauras que ce n'est pas
possible rapidement)...
------------------------
"hken" <hken@discussions.microsoft.com> a écrit dans le message de news:
B36B3AAB-CA30-44F8-B2DE-4E7C7E7F9FBE@microsoft.com...
Bonjour à tous et à toutes.
Alors voilà une petite question.
J'utilise un bout de code qui permet de développer la largeur de la
ComboBox
(dropBox), ça fonctionne parfaitement. Mais comment faire pour 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...
Bien qu'on t'ai passé un bout de code qui manifestement fonctionne mais ne tient pas compte de l'emplacement, un combo a une liste, il doit en permanence avoir la largeur de la plus grande des ses lignes, il ne change pas de taille en fonction de la ligne présenté, ça pourrait même faire bizarre... Et pour avoir la plus grande taille, suffit dans les propriétés de l'écrire à la main pour le régler (avec la police voulue)... ----------------- Sinon, sur le principe, je n'ai pas testé, tu peux plus simplement (si ça marche lors de l'exécution), noter la taille d'un caractère dim taille as long taille = ???
Puis tu calcule la longueur de la chaîne avec X = Len(combo1.list(i))
Puis tu fais combo1.width = (X * taille) + les bords en largeur
Ensuite pour le positionner, tu modifies son Left suivant les marges de la feuille, soit en gros: dim leftMini leftMini = form1.Widht - longueur maximum du combo et if combo1.left > leftMini then combo1.left = leftMini
NB, j'ai fait tout de tête, sans rien tester, il y a peut être des mises au point à faire (pas le temps, désolé), et voir si c'est accepté en cours d'interprétation (je ne sais pas), ça te sera dit par l'interprétateur (teste juste combo1.left = 200, si ça plante tu sauras que ce n'est pas possible rapidement)... ------------------------
"hken" a écrit dans le message de news:
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise un bout de code qui permet de développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire pour 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 !!
Salut,
Bien qu'on t'ai passé un bout de code qui manifestement fonctionne mais ne tient pas compte de l'emplacement, un combo a une liste, il doit en permanence avoir la largeur de la plus grande des ses lignes, il ne change pas de taille en fonction de la ligne présenté, ça pourrait même faire bizarre... Et pour avoir la plus grande taille, suffit dans les propriétés de l'écrire à la main pour le régler (avec la police voulue)... ----------------- Sinon, sur le principe, je n'ai pas testé, tu peux plus simplement (si ça marche lors de l'exécution), noter la taille d'un caractère dim taille as long taille = ???
Puis tu calcule la longueur de la chaîne avec X = Len(combo1.list(i))
Puis tu fais combo1.width = (X * taille) + les bords en largeur
Ensuite pour le positionner, tu modifies son Left suivant les marges de la feuille, soit en gros: dim leftMini leftMini = form1.Widht - longueur maximum du combo et if combo1.left > leftMini then combo1.left = leftMini
NB, j'ai fait tout de tête, sans rien tester, il y a peut être des mises au point à faire (pas le temps, désolé), et voir si c'est accepté en cours d'interprétation (je ne sais pas), ça te sera dit par l'interprétateur (teste juste combo1.left = 200, si ça plante tu sauras que ce n'est pas possible rapidement)... ------------------------
"hken" a écrit dans le message de news:
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise un bout de code qui permet de développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire pour 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 !!
Salut,
Bien qu'on t'ai passé un bout de code qui manifestement fonctionne mais
ne tient pas compte de l'emplacement, un combo a une liste, il doit en
permanence avoir la largeur de la plus grande des ses lignes, il ne change
pas de taille en fonction de la ligne présenté, ça pourrait même faire
bizarre...
Et pour avoir la plus grande taille, suffit dans les propriétés de l'écrire
à la main pour le régler (avec la police voulue)...
-----------------
Sinon, sur le principe, je n'ai pas testé, tu peux plus simplement (si ça
marche lors de l'exécution), noter la taille d'un caractère
dim taille as long
taille = ???
Puis tu calcule la longueur de la chaîne avec
X = Len(combo1.list(i))
Puis tu fais combo1.width = (X * taille) + les bords en largeur
Ensuite pour le positionner, tu modifies son Left suivant les marges de la
feuille, soit en gros:
dim leftMini
leftMini = form1.Widht - longueur maximum du combo
et
if combo1.left > leftMini then combo1.left = leftMini
NB, j'ai fait tout de tête, sans rien tester, il y a peut être des mises au
point à faire (pas le temps, désolé), et voir si c'est accepté en cours
d'interprétation (je ne sais pas), ça te sera dit par l'interprétateur
(teste juste combo1.left = 200, si ça plante tu sauras que ce n'est pas
possible rapidement)...
------------------------
"hken" <hken@discussions.microsoft.com> a écrit dans le message de news:
B36B3AAB-CA30-44F8-B2DE-4E7C7E7F9FBE@microsoft.com...
Bonjour à tous et à toutes.
Alors voilà une petite question.
J'utilise un bout de code qui permet de développer la largeur de la
ComboBox
(dropBox), ça fonctionne parfaitement. Mais comment faire pour 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...
Bien qu'on t'ai passé un bout de code qui manifestement fonctionne mais ne tient pas compte de l'emplacement, un combo a une liste, il doit en permanence avoir la largeur de la plus grande des ses lignes, il ne change pas de taille en fonction de la ligne présenté, ça pourrait même faire bizarre... Et pour avoir la plus grande taille, suffit dans les propriétés de l'écrire à la main pour le régler (avec la police voulue)... ----------------- Sinon, sur le principe, je n'ai pas testé, tu peux plus simplement (si ça marche lors de l'exécution), noter la taille d'un caractère dim taille as long taille = ???
Puis tu calcule la longueur de la chaîne avec X = Len(combo1.list(i))
Puis tu fais combo1.width = (X * taille) + les bords en largeur
Ensuite pour le positionner, tu modifies son Left suivant les marges de la feuille, soit en gros: dim leftMini leftMini = form1.Widht - longueur maximum du combo et if combo1.left > leftMini then combo1.left = leftMini
NB, j'ai fait tout de tête, sans rien tester, il y a peut être des mises au point à faire (pas le temps, désolé), et voir si c'est accepté en cours d'interprétation (je ne sais pas), ça te sera dit par l'interprétateur (teste juste combo1.left = 200, si ça plante tu sauras que ce n'est pas possible rapidement)... ------------------------
"hken" a écrit dans le message de news:
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise un bout de code qui permet de développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire pour 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 !!
hken
Merci à toi Cyprine...
Tout ça je sais déjà le faire, aucun pb. Je dois mal poser ma question, alors je recommence.
J'ai un bout de code. Ce dernier me permet de modifier la largeur de la list d'une ComboBox. Ce code n'a pas pour but de modifier la largeur du ComboBox lui même (au sens Combo1.Width = xxx).
Imaginons que mon Combo est une largeur de X. (Combo1.Width = X) Que le plus grand des Items contenue dans ce Combo soit de Y (LargeurItemMax = Len(Combo1.list(i)) ) En partant de l'hypothèse que Y > X alors en cliquant sur mon Combo, je ne verrais pas la totalité de mon Item le plus large. Normal.
Le but de ce petit bout de code (http://vb.developpez.com/faq/?page=Controles#combo_larg) et de me pemet de modifier la largeur de la zone de déroulement. Ainsi, si je connais Y, je peux adapter cette longueur !!! Et tous ça fonctionne parfaitement bien.....!!! Prend le code, test le, et tu verras que la largeur de la zone déroulant et bien modifiée... bien modifié vers la droite !!! Toujours vers la droite...!! et c'est la mon pb !!!!
Le pb, c'est que si ma ComboBox se trouve très proche de l'extrémité droite de mon écran... alors il se peut, avec ce bout de code, qu'une partie de la zone déroulante ne soit plus visible...j'ai ralonger la largeur de la zone déroulante et je ne vois plus tout !!!! Ce que j'aimerais bien faire, c'est que au lieu que l'élargissement de la zone déroulante se fasse forcément vers la droite, je puisse choisir de le faire vers la gauche !!!???
C'est ça ma question !!!
Pour être encore plus simple, c'est comme quand tu fais un click droite alors que ton curseur se trouve à proximité du bord droit de l'écran... et ben au lien de faire apparaitre le MenuPopUp vers la droite de ton curseur (fonctionnement classique) et bien il le fait apparaitre sur la gauche!!! il le fait apparaitre vers la gauche de ton curseur parce que vers la droite tu ne pourrais ps tout voir !!!
Donc si quelqu'un connais une constante de ComboBox ou quoi que ce soit qui pourrais me permettre de faire ce que je désire... je l'en remercie pas avance.
Merci.
Merci à toi Cyprine...
Tout ça je sais déjà le faire, aucun pb.
Je dois mal poser ma question, alors je recommence.
J'ai un bout de code. Ce dernier me permet de modifier la largeur de la list
d'une ComboBox. Ce code n'a pas pour but de modifier la largeur du ComboBox
lui même (au sens Combo1.Width = xxx).
Imaginons que mon Combo est une largeur de X. (Combo1.Width = X)
Que le plus grand des Items contenue dans ce Combo soit de Y (LargeurItemMax
= Len(Combo1.list(i)) )
En partant de l'hypothèse que Y > X alors en cliquant sur mon Combo, je ne
verrais pas la totalité de mon Item le plus large. Normal.
Le but de ce petit bout de code
(http://vb.developpez.com/faq/?page=Controles#combo_larg) et de me pemet de
modifier la largeur de la zone de déroulement. Ainsi, si je connais Y, je
peux adapter cette longueur !!!
Et tous ça fonctionne parfaitement bien.....!!! Prend le code, test le, et
tu verras que la largeur de la zone déroulant et bien modifiée... bien
modifié vers la droite !!!
Toujours vers la droite...!! et c'est la mon pb !!!!
Le pb, c'est que si ma ComboBox se trouve très proche de l'extrémité droite
de mon écran... alors il se peut, avec ce bout de code, qu'une partie de la
zone déroulante ne soit plus visible...j'ai ralonger la largeur de la zone
déroulante et je ne vois plus tout !!!!
Ce que j'aimerais bien faire, c'est que au lieu que l'élargissement de la
zone déroulante se fasse forcément vers la droite, je puisse choisir de le
faire vers la gauche !!!???
C'est ça ma question !!!
Pour être encore plus simple, c'est comme quand tu fais un click droite
alors que ton curseur se trouve à proximité du bord droit de l'écran... et
ben au lien de faire apparaitre le MenuPopUp vers la droite de ton curseur
(fonctionnement classique) et bien il le fait apparaitre sur la gauche!!! il
le fait apparaitre vers la gauche de ton curseur parce que vers la droite tu
ne pourrais ps tout voir !!!
Donc si quelqu'un connais une constante de ComboBox ou quoi que ce soit qui
pourrais me permettre de faire ce que je désire... je l'en remercie pas
avance.
Tout ça je sais déjà le faire, aucun pb. Je dois mal poser ma question, alors je recommence.
J'ai un bout de code. Ce dernier me permet de modifier la largeur de la list d'une ComboBox. Ce code n'a pas pour but de modifier la largeur du ComboBox lui même (au sens Combo1.Width = xxx).
Imaginons que mon Combo est une largeur de X. (Combo1.Width = X) Que le plus grand des Items contenue dans ce Combo soit de Y (LargeurItemMax = Len(Combo1.list(i)) ) En partant de l'hypothèse que Y > X alors en cliquant sur mon Combo, je ne verrais pas la totalité de mon Item le plus large. Normal.
Le but de ce petit bout de code (http://vb.developpez.com/faq/?page=Controles#combo_larg) et de me pemet de modifier la largeur de la zone de déroulement. Ainsi, si je connais Y, je peux adapter cette longueur !!! Et tous ça fonctionne parfaitement bien.....!!! Prend le code, test le, et tu verras que la largeur de la zone déroulant et bien modifiée... bien modifié vers la droite !!! Toujours vers la droite...!! et c'est la mon pb !!!!
Le pb, c'est que si ma ComboBox se trouve très proche de l'extrémité droite de mon écran... alors il se peut, avec ce bout de code, qu'une partie de la zone déroulante ne soit plus visible...j'ai ralonger la largeur de la zone déroulante et je ne vois plus tout !!!! Ce que j'aimerais bien faire, c'est que au lieu que l'élargissement de la zone déroulante se fasse forcément vers la droite, je puisse choisir de le faire vers la gauche !!!???
C'est ça ma question !!!
Pour être encore plus simple, c'est comme quand tu fais un click droite alors que ton curseur se trouve à proximité du bord droit de l'écran... et ben au lien de faire apparaitre le MenuPopUp vers la droite de ton curseur (fonctionnement classique) et bien il le fait apparaitre sur la gauche!!! il le fait apparaitre vers la gauche de ton curseur parce que vers la droite tu ne pourrais ps tout voir !!!
Donc si quelqu'un connais une constante de ComboBox ou quoi que ce soit qui pourrais me permettre de faire ce que je désire... je l'en remercie pas avance.
Merci.
Jacques93
hken a écrit :
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise un bout de code qui permet de développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire pour 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...
Tu peux essayer ceci : (Nécessite Windows 98, 2000 ou XP) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/comboboxes/comboboxreference/comboboxfunctions/getcomboboxinfo.asp
Option Explicit
Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
Private Type COMBOBOXINFO cbSize As Long rcItem As RECT rcButton As RECT stateButton As Long hwndCombo As Long hwndEdit As Long hWndList As Long End Type
Private Declare Function GetComboBoxInfo Lib "user32" (ByVal hwndCombo As Long, CBInfo As COMBOBOXINFO) As Long Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Const HWND_TOP = 0 Private Const SWP_NOSIZE = &H1 Private Const SWP_SHOWWINDOW = &H40 Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal Cx As Long, ByVal Cy As Long, ByVal wFlags As Long) As Long
Private Sub Form_Load() With Me.Combo1 .AddItem "aaaaaaa" .AddItem "bbbbbbb" .AddItem "ccccccc" .AddItem "ddddddd" .AddItem "eeeeeee" .AddItem "fffffff" End With
End Sub
Private Sub Combo1_DropDown() Timer1.Interval = 5 Timer1.Enabled = True End Sub
Private Sub Timer1_Timer() PosComboList -20 ' à ajuster Timer1.Enabled = False End Sub
Private Sub PosComboList(Decalage As Integer) Dim hList As Long Dim rc As RECT
hList = GetComboListHandle(Combo1) GetWindowRect hList, rc SetWindowPos hList, HWND_TOP, rc.Left + Decalage, rc.Top, 0&, 0&, SWP_NOSIZE Or SWP_SHOWWINDOW End Sub
Private Function GetComboListHandle(ctl As ComboBox) As Long Dim CBI As COMBOBOXINFO
CBI.cbSize = Len(CBI) GetComboBoxInfo ctl.hwnd, CBI GetComboListHandle = CBI.hWndList End Function
-- Cordialement,
Jacques.
hken a écrit :
Bonjour à tous et à toutes.
Alors voilà une petite question.
J'utilise un bout de code qui permet de développer la largeur de la ComboBox
(dropBox), ça fonctionne parfaitement. Mais comment faire pour 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...
Tu peux essayer ceci :
(Nécessite Windows 98, 2000 ou XP)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/comboboxes/comboboxreference/comboboxfunctions/getcomboboxinfo.asp
Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type COMBOBOXINFO
cbSize As Long
rcItem As RECT
rcButton As RECT
stateButton As Long
hwndCombo As Long
hwndEdit As Long
hWndList As Long
End Type
Private Declare Function GetComboBoxInfo Lib "user32" (ByVal hwndCombo
As Long, CBInfo As COMBOBOXINFO) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,
lpRect As RECT) As Long
Private Const HWND_TOP = 0
Private Const SWP_NOSIZE = &H1
Private Const SWP_SHOWWINDOW = &H40
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long,
ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal
Cx As Long, ByVal Cy As Long, ByVal wFlags As Long) As Long
Private Sub Form_Load()
With Me.Combo1
.AddItem "aaaaaaa"
.AddItem "bbbbbbb"
.AddItem "ccccccc"
.AddItem "ddddddd"
.AddItem "eeeeeee"
.AddItem "fffffff"
End With
End Sub
Private Sub Combo1_DropDown()
Timer1.Interval = 5
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
PosComboList -20 ' à ajuster
Timer1.Enabled = False
End Sub
Private Sub PosComboList(Decalage As Integer)
Dim hList As Long
Dim rc As RECT
hList = GetComboListHandle(Combo1)
GetWindowRect hList, rc
SetWindowPos hList, HWND_TOP, rc.Left + Decalage, rc.Top, 0&, 0&,
SWP_NOSIZE Or SWP_SHOWWINDOW
End Sub
Private Function GetComboListHandle(ctl As ComboBox) As Long
Dim CBI As COMBOBOXINFO
CBI.cbSize = Len(CBI)
GetComboBoxInfo ctl.hwnd, CBI
GetComboListHandle = CBI.hWndList
End Function
Bonjour à tous et à toutes. Alors voilà une petite question. J'utilise un bout de code qui permet de développer la largeur de la ComboBox (dropBox), ça fonctionne parfaitement. Mais comment faire pour 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...
Tu peux essayer ceci : (Nécessite Windows 98, 2000 ou XP) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/comboboxes/comboboxreference/comboboxfunctions/getcomboboxinfo.asp
Option Explicit
Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
Private Type COMBOBOXINFO cbSize As Long rcItem As RECT rcButton As RECT stateButton As Long hwndCombo As Long hwndEdit As Long hWndList As Long End Type
Private Declare Function GetComboBoxInfo Lib "user32" (ByVal hwndCombo As Long, CBInfo As COMBOBOXINFO) As Long Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Const HWND_TOP = 0 Private Const SWP_NOSIZE = &H1 Private Const SWP_SHOWWINDOW = &H40 Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal Cx As Long, ByVal Cy As Long, ByVal wFlags As Long) As Long
Private Sub Form_Load() With Me.Combo1 .AddItem "aaaaaaa" .AddItem "bbbbbbb" .AddItem "ccccccc" .AddItem "ddddddd" .AddItem "eeeeeee" .AddItem "fffffff" End With
End Sub
Private Sub Combo1_DropDown() Timer1.Interval = 5 Timer1.Enabled = True End Sub
Private Sub Timer1_Timer() PosComboList -20 ' à ajuster Timer1.Enabled = False End Sub
Private Sub PosComboList(Decalage As Integer) Dim hList As Long Dim rc As RECT
hList = GetComboListHandle(Combo1) GetWindowRect hList, rc SetWindowPos hList, HWND_TOP, rc.Left + Decalage, rc.Top, 0&, 0&, SWP_NOSIZE Or SWP_SHOWWINDOW End Sub
Private Function GetComboListHandle(ctl As ComboBox) As Long Dim CBI As COMBOBOXINFO
CBI.cbSize = Len(CBI) GetComboBoxInfo ctl.hwnd, CBI GetComboListHandle = CBI.hWndList End Function
-- Cordialement,
Jacques.
hken
Yes... c'est un truc comme ça qu'il me faut !!!!
Un grand merci à toi Jacques93... c'est vraiment cool !!!
J'vais creuser dans ce sens... Il faut pas qu'j'utilise de Timer par contre
Encore merci... si j'ai des pbs de toute façon je poserais des questions !!
Yes... c'est un truc comme ça qu'il me faut !!!!
Un grand merci à toi Jacques93... c'est vraiment cool !!!
J'vais creuser dans ce sens...
Il faut pas qu'j'utilise de Timer par contre
Encore merci... si j'ai des pbs de toute façon je poserais des questions !!