VB 6 (fonction replace)

Résolu
Bonjour,

J'ai un petit problème, j'ai ce code :
Text1.Text = Replace(Text1.Text, "a", "z")
Text1.Text = Replace(Text1.Text, "b", "y")
Text1.Text = Replace(Text1.Text, "c", "x")
Text1.Text = Replace(Text1.Text, "d", "w")
Text1.Text = Replace(Text1.Text, "e", "v")
Text1.Text = Replace(Text1.Text, "f", "u")
Text1.Text = Replace(Text1.Text, "g", "t")
Text1.Text = Replace(Text1.Text, "h", "s")
Text1.Text = Replace(Text1.Text, "i", "r")
Text1.Text = Replace(Text1.Text, "j", "q")
Text1.Text = Replace(Text1.Text, "k", "p")
Text1.Text = Replace(Text1.Text, "l", "o")
Text1.Text = Replace(Text1.Text, "m", "n")


Qui dit que a se remplace par z dans le text1, etc ....
Sa marche pas tellement (sa s'actualise pas, je ne sais pas pourquoi), mais surtout, quand sa écrit, quand on écrit, sa écrit vers la gauche, c'est a dire le trait ce remet à gauche.
Savez vous comment le mettre a droite et comment actualiser le remplacement ?

Merci !

5 réponses

  1. Contributeur
    Bonjour,
    Tu crois pas que ce serait plus simple de modifier la configuration de ton clavier ?
    A+
    0
    1. c'est pour un logiciel d'alphabet codé =), donc non loul
      0
      1. Contributeur
        OK, mais ce n'est pas aussi simple que tu ne le pense, il est impossible de modifier le textBox avant que tout les évènements aient étés passés.
        Ont peu contourner cette difficulté avec un timer.
        Pour le test, ouvre un nouveau projet
        Un textBox et un timer
        et le code..
        Dim TB
        
        Private Sub Form_Load()
            TB = Array("y", "x", "w", "v", "u", "t", "s", "r", "q", "p", "o", "n")
            Timer1.Interval = 50
            Timer1.Enabled = True
        End Sub
        
        Private Sub Timer1_Timer()
        Dim i As Integer, e As Integer
        Dim C As Integer, S As String
            C = Text1.SelStart
            S = Text1.Text
            For e = 1 To Len(S)
                For i = 97 To 108
                    If Mid(S, e, 1) = Chr(i) Then
                        Mid(S, e, 1) = TB(i - 97)
                        Exit For
                    End If
                Next
            Next
            Text1.Text = S
            Text1.SelStart = C
            Text1.SetFocus
        End Sub
        0
        1. Contributeur
          Pour éviter que ça tourne pour rien tu peu ajouter ces deux procédures.
          Private Sub Text1_GotFocus()
              Timer1.Enabled = True
          End Sub
          
          Private Sub Text1_LostFocus()
              Timer1.Enabled = False
          End Sub
          0
          1. ok merci bcp lermite =)
            0