Le premier site francophone dédié au développement Pocket PC


Comment forcer un TextBox à n'accepter que des chiffres ?
 
u  

 

Vous avez surement déjà eu besoin de créer une zone de saisie qui ne doit accepter que des chiffres, et si ce n'est pas le cas, ça ne saurait tarder. La méthode la plus "simple" consiste à se placer dans l'événement "KeyPress" du TextBox et de modifer le paramètre "KeyAscii" (en ayant bien mis ByRef devant au lieu de ByVal, voir article à ce sujet), pour que les caractères non numériques ne soient pas acceptés. Il existe une autre solution basée sur le paramétrage du TextBox. En effet, si nous modifions le style du TextBox en lui donnant l'ordre de n'accepter que des chiffre le tour est joué, mais pour faire celà, il faut utiliser les APIs...

Modifier le style d'un contrôle

Pour modifier le style d'un contrôle, il faut tout d'abord récupérer son style actuel en utilisant la fonction "GetWindowLong" de la librairie "Coredll" avec comme paramètre "nIndex" la constante GWL_STYLE, puis lui ajouter (avec l'opérateur OR) la constante de style que l'on veut lui appliquer. Le style ainsi créé et réinjecté au contrôle grâce à la fonction "SetWindowLong" (elle aussi incluse dans Coredll).

TextBox à chiffres uniquement

Pour obliger un contrôle TextBox à n'accepter que des chiffres en saisie, il faut lui appliquer le style ES_NUMBER :

public Declare Function GetWindowLong Lib "coredll" Alias "GetWindowLongW" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
public Declare Function SetWindowLong Lib "coredll" Alias "SetWindowLongW" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long


Const GWL_STYLE = -16
Const ES_NUMBER = &H2000

Sub SetNumberBox(byval wTextBox as TextBox)
Dim s As Long
s = GetWindowLong(wTextBox.hWnd, GWL_STYLE)
s = s Or ES_NUMBER
Call SetWindowLong(wTextBox.hWnd, GWL_STYLE, s)
End Sub


 

 


Stéphane Sibué

 
       
   
 
   
Copyright 2001-2004 - Tous droits réservés
 
   

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.