Combobox numérique, longueur limite

Contenu du snippet

il s'agit d'utiliser des combo en affichage de numériques (cadrés à droite) et une longueur maximum : en fait la même chose que le TextBox !!
mais bon j'en avais besoin en combo...

Source / Exemple :


' A.Loiseau
'
' Module: déclarer la constante 
'de taille limite du ComboBox
' déclarer l'API 

Public Const CB_LIMITTEXT = &H141

Public Declare Function SendMessageLong _
Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

'
' Form: ComboBox en Style 1 (simple combo)
'       Pour donner au ComboBox les mêmes
'       caractéristiques que le TextBox en
'       propriétés:
'       TextBox.alignemt=1 (right justify)
'       TextBox.maxlength=Un nombre (ici 7)
'
' A l'appel de l'API on ajoute 1 à la taille maxi
' dans MaxLen, car le Format$ met des espaces
' à gauche, comptant comme caractères alors
' le ComboText serait toujours rempli !

Dim CBStartSel As Integer
Dim CBLenSel As Integer
Dim CBtext As String

Private Sub Combo1_GotFocus(Index As Integer)
Combo1(Index).SelStart = Combo1(Index).Tag
End Sub

Sub Form_Load()
Dim MaxLen As Integer

' combo en groupe de contrôles

Combo1(0).Font = "FixedSys"
Combo1(1).Font = "FixedSys"

MaxLen = 7
Call SendMessageLong(Combo1(0).hwnd, CB_LIMITTEXT, MaxLen + 1, ByVal 0&)
' longueur d'entrées possible dans le Combo:
Combo1(0).Tag = MaxLen
Combo1(0).Text = String(MaxLen, " ")
label1 = MaxLen

MaxLen = 4
Call SendMessageLong(Combo1(1).hwnd, CB_LIMITTEXT, MaxLen + 1, ByVal 0&)
' longueur d'entrées possible dans le Combo:
Combo1(1).Tag = MaxLen
Combo1(1).Text = String(MaxLen, " ")
label2 = MaxLen
End Sub

Private Sub Combo1_Change(Index As Integer)
Dim Taille As Integer
Dim Arobase As String
' zone ComboBox numérique
Taille = Len(Trim$(Combo1(Index)))
Arobase = String(Combo1(Index).Tag, "@")
If Taille > Combo1(Index).Tag Then Combo1(Index) = CBtext: Beep ': Exit Sub
Combo1(Index).Text = Format$(Right$(Combo1(Index).Text, Combo1(Index).Tag), Arobase)
Combo1(Index).SelStart = CBStartSel + CBLenSel
End Sub

Private Sub Combo1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
CBtext = Combo1(Index).Text
CBStartSel = Combo1(Index).SelStart
CBLenSel = Combo1(Index).SelLength
End Sub

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.