Dans VB, le contrôle ListBox ne possède pas de propriété Format (dommage!).
Si l'on veut que ce contrôle n'accepte que des entrées numériques, il faut jouer sur l'événement 'Change' du contrôle. On peut aussi utiliser le contrôle Masked Edit Control de Microsoft (MSMASK32.OCX)... Mais j'aime pas trop les OCX !
Je propose ici une méthode via API pour formater un TextBox qui n'acceptera que des entrées numériques... (A coller dans un module)
Source / Exemple :
'DECLARATION API
Public Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
'DECLARATION CONSTANTES
Public Const GWL_STYLE As Long = -16&
Public Const ES_NUMBER = &H2000&
Public Sub SetNumber(NumberText As TextBox, Flag As Boolean)
Dim curstyle As Long, newstyle As Long
'Récupère le style
curstyle = GetWindowLong(NumberText.hwnd, GWL_STYLE)
If Flag Then
curstyle = curstyle Or ES_NUMBER
Else
curstyle = curstyle And (Not ES_NUMBER)
End If
'Attribue le nouveau style
newstyle = SetWindowLong(NumberText.hwnd, GWL_STYLE, curstyle)
'Rafraîchi
NumberText.Refresh
End Sub
Conclusion :
Utilisation:
'Appliquer le format numérique
SetNumber Me.MonTextBox, True
'Enlever le format numérique
SetNumber Me.MonTextBox, False
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.