Textbox numerique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 642 fois - Téléchargée 34 fois

Contenu du snippet

"Un textbox que peut contenir uniquement des chiffres"

Suite a une demande récurrent esur le Forum, et quelques dépots de sources traitant le sujet en filtrant les touches du clavier....

voici une version utilisant les API....

Source / Exemple :


Option Explicit

'# Déclaration de quelques API
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const ES_NUMBER As Long = &H2000&
Private Const GWL_STYLE As Long = -16

Private Sub MakeNumericOnly(Obj As Object)
    '# Cette variable contiendra le Style de notre Controle :
    '# il s'agit d'une combinaison de differentes valeurs...
    Dim Style As Long
    
    '# On récupère le style actuel
    Style = GetWindowLong(Obj.hwnd, GWL_STYLE)
    
    '# On ajoute le style ES_NUMBER...
    Style = Style Or ES_NUMBER
    
    '# et on replace le tout dans le Controle
    SetWindowLong Obj.hwnd, GWL_STYLE, Style
End Sub

Private Sub Form_Load()
    MakeNumericOnly Text1
End Sub

Conclusion :


Le presse papier est une faille ici.... libre a vous d'implémenter ca comme bon vous semblera......

De plus, cette source ne permets pas des nombres décimaux, ou négatifs...

A voir également

Ajouter un commentaire

Commentaires

cs_dragon
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
3 -
sinon tu as toujours la vieille méthode de la détection d'erreur

sur le on text change

on error goto Erreur
dim temp as double
temp = sender.text
sender.backcolor = color.white
exit sub
erreur:
sender.backcolor = color.red
msgbox("Le texteBox " & sender.name & " doit contenir que des chiffres doubles")

je sais , j'ai mixer un peu de .net et vb6.0, je suis plus habitué à Vb6.0. et avoir été en .Net, il y aurait eu des façons d'qavoir un résultat beaucoup plus puissant, surytout mixer avec l'orienté objet
Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
Comme je l'ai indiqué :

Le presse papier est une faille ici.... libre a vous d'implémenter ca comme bon vous semblera......


il sufit en fait de se greffer sur l'evenement KeyDown, de tester l'action Coller, de verifier le contenu du clipboard et d'empecher si besoin est le collage dans le textbox

quelques lignes de code suffisent pour cela...
papi jim
Messages postés
42
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
31 décembre 2005
-
Salut tout le monde,
j'ai une petite question a propos des ctrl + (X,C,V)
avec le code que vous donnez, on peu copier du texte la ou on n'en veut pas... :s
Comment faire pour controle la copie...?
merci
Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
j'ai même pas essayé le bout de code envoyé !!

j'ai juste repris le code envoyé au dessus, et dont l'algo me semblait étrange.... (Then Vide Else...)
cs_Pitchou13
Messages postés
12
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
8 mars 2005
-
Lol la mienne ne va pas non plus...
C'est zarb... En plus je me suis royalement planté ds les signes >,<!

Sa source est bcp plus simple pour les claviers numériques ...

Toi tu as mis que si le keycode est compris entre 97 et 103 allors sa anule l'action ...

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.