Limiter saisie d'un textbox

[Résolu]
Signaler
Messages postés
39
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
8 décembre 2004
-
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
-
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.

3 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
39
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
8 décembre 2004
1
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