Limiter saisie d'un textbox [Résolu]

cs_louly 39 Messages postés vendredi 19 mars 2004Date d'inscription 8 décembre 2004 Dernière intervention - 23 nov. 2004 à 00:47 - Dernière réponse : Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention
- 23 nov. 2004 à 02:09
Bonjour,

Je voudrai afin d'afficher dans une spreadsheet (VB6) avec taille de cellule fixé, limiter la saisie dans un textbox à la taille physique de ce textbox.
Sur la solution de limiter le nombre de caractere, le probleme est que la taille des caracteres varie selon Maj ou Min ou meme selon la lettre.

Il me reste plus que soit faire une fonction qui selon la police utilisé compte le nombre de chaque caractere......... enfin trop long soit esperer une reponse;)

Donc si vous avez une solution soit d'un controle (.ocx) ou d'une facons d'aborder mon probleme je suis prenneur.
Afficher la suite 

3 réponses

Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 23 nov. 2004 à 01:19
+3
Utile
Rem mettre le TextBox dans une PictureBox
Rem même taille et même police
Rem Picture1.Appearance = Flat
Rem Picture1.BorderStyle = none
Rem Picture1.ScaleMode = 3

Private Sub Text1_KeyPress(KeyAscii As Integer)
    Dim Lg As Integer
    Dim ch As String
'permettre le caractère de suppression
    If KeyAscii = 8 Then Exit Sub
' prendre en compte le caractère saisi + la place du curseur
    ch = Text1.Text & Chr$(KeyAscii) & "a"
'calcul longueur en pixels
    Lg = Picture1.TextWidth(ch)
'rejeter le caractère si trop grand
    If Lg > Text1.Width Then KeyAscii = 0
End Sub


Daniel
Cette réponse vous a-t-elle aidé ?  
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 23 nov. 2004 à 02:09
+3
Utile
Heu non la saisie concerne que le TextBox, le PictureBox ne sert que pour avoir la Fonction TextWidth.
On a cette Fonction que pour les containers, donc elle existe aussi pour la Forme.
tu peux faire directement:
Lg = textWidth(ch)
à condition que la forme et le TextBox ont la même police.
Il faut aussi que les unités du TextBox soit en pixels pour pouvoir être comparés.
en fait on a le ScaleWidth et le Width du PictureBox et le Width du TextBox qui sont identiques, puisque j'ai mis BorderStyle = 0 et même taille, c'était une facilité mais pas obligatoire.
Si tu trouves que c'est pas assez précis, tu peux jouer sur le dernier caractère place du curseur), j'ai mis "a" à tout hasard, mais tu peux mettre "i" qui est plus petit.

Daniel
Cette réponse vous a-t-elle aidé ?  
cs_louly 39 Messages postés vendredi 19 mars 2004Date d'inscription 8 décembre 2004 Dernière intervention - 23 nov. 2004 à 01:51
0
Utile
Merci beaucoup Daniel c exactement ce que je chercher.
petite precision si qq'1 passe par là avec le même probleme
dans l'avant derniere ligne du code de daniel il fo metre

If Lg > Picture1.ScaleWidth Then KeyAscii = 0

au lieu de
If Lg > Text1.Width Then KeyAscii = 0

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.