0/5 (1 avis)
Snippet vu 8 595 fois - Téléchargée 91 fois
' 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
30 juil. 2012 à 21:00
J'avais un problème semblable et je l'ai résolu comme ceci
Private Sub combo1_KeyPress(KeyAscii As Integer)If Len(Trim(combo1.Text)) >5 And KeyAscii <> 8 Then KeyAscii 0 'limite le box à 5 chars et moins. Si l'on entre plus, on efface.
end sub
j'en ai aussi profité pour contrôler les caractères permis dans le box.
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.