Control Alignement !!

Résolu
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006 - 13 sept. 2005 à 12:51
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006 - 13 sept. 2005 à 13:24
Bonjour à toutes et à tous.
Voilà une p'tite question toute simple.
Peux t'on (et dans ce cas, comment fait-on!!!) pour choisir l'alignement du texte dans une ComboBox (vbLeftJustify, vbRightJustify, vbCenter) comme pour une TextBox.

Merci d'avance pour vos réponses!

3 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
13 sept. 2005 à 13:03
C'est possible avec un contrôle comboBox issu des composants "Microsoft Forms 2.0" (CTRL+T pour afficher la fenêtre).




comboBox1.TextAlign = fmTextAlignCenter






Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
13 sept. 2005 à 12:59
Bonjour,
Je ne crois pas que celà soit possible et franchement, je n'en vois pas l'utilité.

jpleroisse
0
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
13 sept. 2005 à 13:24
Merci à vous d'avoir répondu...

Salut jpleroisse. encore merci pour ton code la dernière fois!!!
Ba si en fait ça peux être utile dans mon cas!!!
Suite à ton code, j'ai réussi à développer la liste déroulante d'une ComboBox au choix vers la droite (par défaut) ou vers la gauche si pas assez de place sur la droite!!!
La pb c'est que des fois les Items sont tellement long qu'on en voient pas le début !!!
et qu'un p'tit décalage (alignement) du texte vers la droite (dans le cas d'un développement de la liste déroulant du ComboBox vers la gauche) serais le bienvenu...

J'te passe le code pour info
'###### dans le module de la Form
Option Explicit
'Largeur (en PIXEL) du développement du ComboBox
Public MyComboLargeur As Long


Private Sub Form_Load()
With Me.Combo1
.AddItem "aaaaaaa"
.AddItem "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
End With
'Initialisation de la taille du développement du ComboBox
MyComboLargeur = 700
'Dimensionnement de la largeur de la partie déroulate du ComboBox.
LargeurCombo Combo1.hwnd, MyComboLargeur
End Sub


'Déroulement de la liste
Private Sub Combo1_DropDown()
Dim ret As Single
'Initialisation
ret = 0


'Calcul : détermination du mode d'ouverture (droite/gauche)
ret = Me.Left + Me.Combo1.Left + Me.Combo1.Width + ((MyComboLargeur * (15360 / 1024)) - Me.Combo1.Width)


'Décision
If ret > Screen.Width Then
'Décalage du menu déroulant de la ComboBox vers la gauche
Form1.Timer1.Interval = 5
Form1.Timer1.Enabled = True
End If
End Sub


Private Sub Timer1_Timer()
PosComboList -(((15360 / 1024) * MyComboLargeur - Me.Combo1.Width) * 1024) / 15360
Timer1.Enabled = False
End Sub


'####Dans un Module
Option Explicit
'Declaration
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 Const HWND_TOP = 0
Private Const SWP_NOSIZE = &H1
Private Const SWP_SHOWWINDOW = &H40
Public Const CB_SETDROPPEDWIDTH = &H160
Public Const CB_SHOWDROPDOWN = &H14F
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 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 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


Public Sub LargeurCombo(hwnd As Long, largeur As Long)
'Dimensionnement de la largeur de la partie déroulate du ComboBox.
SendMessage hwnd, CB_SETDROPPEDWIDTH, largeur, ByVal 0
End Sub


Public Function GetComboListHandle(ctl As ComboBox) As Long
Dim CBI As COMBOBOXINFO


CBI.cbSize = Len(CBI)
GetComboBoxInfo ctl.hwnd, CBI
GetComboListHandle = CBI.hWndList
End Function


Public Sub PosComboList(Decalage As Integer)
Dim hList As Long
Dim rc As RECT


hList = GetComboListHandle(Form1.Combo1)
GetWindowRect hList, rc
SetWindowPos hList, HWND_TOP, rc.Left + Decalage, rc.Top, 0&, 0&, SWP_NOSIZE Or SWP_SHOWWINDOW
End Sub

Il te faut juste une ComboBox (ComboBox1) un Timer (Timer1)... et le tour est joué!!!
Tu fais une Form de petite dimension et tu la déplace sur ton écran.
Quand t'es trop près de la droite de l'écran... la ComboBox se développe à gauche... et réciproquement...

Merci à toi econs
J'vais essayer..

Encore Merci....
0
Rejoignez-nous