IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] gestion textbox


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Par défaut [VB6] gestion textbox
    Bonjour,

    je cherche une solution sur le point suivant:

    une textbox de longueur 12, je voudrais permettre a l'utilisateur de pouvoir modifier que les deux derniers caractères de la valeur contenue dans la textbox.

    Merci, de votre aide sur le sujet

    Martial

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Bienvenue sur DVP

    Une solution a base de TextBoxs et une autre avec un RichTextBox
    Sur un Form, 2 CommadButtons, un Label, 2 TextBoxs et un RichtextBox et ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Option Explicit
     
    Private Sub Form_Load()
    Text1.FontSize = 10
    Text1.Locked = True
    'Label1.Visible = False
    'Text2.BackColor = &HC0FFC0
    Label1.AutoSize = True
    Label1.FontSize = Text1.FontSize
    Text2.FontSize = Text1.FontSize
    Text2.Appearance = 0: Text2.BorderStyle = 0
    Text2.Height = Text1.Height - 15
     
    InitText "Mot à Proteger", "partie modifiable"
     
    '*********************************************************
    '*** Solution largement simplifiée avec un RichTextBox ***
    '*********************************************************
    RichTextBox1.MultiLine = False
    RichTextBox1.TextRTF = ""
    RichTextBox1.SelText = "Protection "
    RichTextBox1.SelColor = &HFF0000
    RichTextBox1.SelProtected = True
    RichTextBox1.SelText = "de cette partie du texte"
    RichTextBox1.SelText = " mais pas de celle-ci"
    '*********************************************************
    End Sub
     
    Public Sub InitText(MotProteger As String, MotModifiable)
    Text1.Text = MotProteger
    Text2.Text = MotModifiable
    Label1.Caption = Text1.Text & "  " & Text2.Text
    Text1.Width = Label1.Width + 90
    Label1.Caption = "  " & Text2.Text
    Text2.Width = Label1.Width - 30
    Text2.Move (Text1.Left + Text1.Width) - Text2.Width - 15, Text1.Top + 30
    Text2.Width = Text2.Width - 15
    End Sub
    Private Sub Text1_GotFocus()
    Text2.SetFocus
    End Sub
    Private Sub Command1_Click()
    InitText "On ne touche pas", "mise à par dans cette partie c'est possible"
    End Sub
    Private Sub Command2_Click()
    InitText "ABCDEFGHIJK", "12"
    End Sub
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Avec une textbox (seule) : celà pourrait ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Explicit
    Private anc As String
     
    Private Sub Form_Activate()
      Text1.Text = "123456789012" 'juste pour exemple et simulation
      anc = Text1.Text
    End Sub
     
    Private Sub Text1_Change()
      Select Case Len(Text1.Text)
       Case 10, 11, 12 ' à toi de limiter comme tu l'entends
         anc = Text1.Text
       Case Else
         non
       End Select
    End Sub
    Private Sub non()
      Text1.Text = anc
      DoEvents
      Text1.SelStart = 10: Text1.SelLength = 2 ' voilà (1er souci) de quoi assurerle confort de l'utilisateur
    End Sub
    Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      ' on choisit le mousemove plutôt que le GotFocus pour éviter un autre petit problème)
      non
    End Sub
     
    '--------un rajout pour empêcher l'inconvénient signalé par OhMonBato
    Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = 37 And Text1.SelStart = 10 Then KeyCode = 0 
      DoEvents
    End Sub

    EDIT : et on se protège du même coup des copier/coller non souhaitables.

  4. #4
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Sauf erreur de ma part, avec ta solution ucfoutu, on ne se protège pas des déplacements manuels du curseur qui permettent ensuite d'effacer un autre caractère.

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, OhMonBato,

    C'est vrai ! on y parvient dans certaines circonstances.
    Qu'à cela ne tienne : on va changer le fusil d'épaule et rendre le "préfixe" immuable, alors. (j'ai également modifié le 1er exemple pour éviter ce problème)

    Premier essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private rac As String, anc As String, deja As String
     
    Private Sub Form_Activate()
      anc = Text1.Text
      rac = Left(anc, 10)
    End Sub
     
    Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      ' on choisit le mousemove plutôt que le GotFocus pour éviter un autre petit problème)
      couic
    End Sub
     
     
    Private Sub Text1_Change()
      If Len(Text1.Text) < 10 Or Len(Text1.Text) > 12 Then Text1.Text = anc: couic: Exit Sub
      If Not Text1.Text Like rac & String(Len(Text1.Text) - 10, "?") Then
        Text1.Text = anc: couic
      Else
        anc = Text1.Text
      End If
    End Sub
     
     
    Private Sub couic()
      If Text1.SelStart > 10 Then Exit Sub
      Text1.SelStart = 10: Text1.SelLength = 2 ' voilà (1er souci) de quoi assurerle confort de l'utilisateur
      DoEvents
    End Sub
    si maintenant tu veux imposer au moins un caractère et pas plus de 2 en "suffixe", remplace donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Text1.Text Like rac & String(Len(Text1.Text) - 10, "?") Or Len(Text1.Text) > 12 Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Text1.Text Like rac & String(Len(Text1.Text) - 10, "?") Or Len(Text1.Text) > 12 Or Len(Text1.Text) < 11 Then
    Bon... je n'ai pas réussi à trouver un piège autre, mais il y en a peut-être un qui m'échappe....
    Voilà en tout état de cause deux approches, même si perfectibles).

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Par défaut vb6 gestion textbox
    Merci, a vous pour votre aide, sa fonctionne a la perfection

    cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6]Gestion d'excel
    Par biquet dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 30/03/2006, 16h24
  2. [VB6] gestion des feuilles par des onglets
    Par kitsune dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/02/2006, 16h17
  3. VB6 - gestion des menus d'une application
    Par lhirsute dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/01/2006, 19h17
  4. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo