USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Testando TextBox
Irenko
BELO HORIZONTE
MG - BRASIL
ENUNCIADA !
Postada em 15/04/2009 08:01 hs            
Private Sub TxtLc2_KeyPress(KeyAscii As Integer)
If Len(TxtLc2.Text) = 2 Then
    If IsNumeric(TxtLc2.Text) Then
        TxtLc2.Text = TxtLc2.Text + "-"
    Else
        TxtLc2.Text = TxtLc2.Text + " "
    End If
    TxtLc2.SelStart = Len(TxtLc2.Text)
End If
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub

O código acima para um determinado TextBox faz o seguinte:

insere automaticamente o caracter (-)  ex.:

22-2
CX-3

O problema é se eu preciso usar o backspace ele trava da direita para esquerda no tecerceiro caracter, ou seja, no 2 ou no X. Como posso melhorar esse código?
   
DeFreitas
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 15/04/2009 10:01 hs            
Bom dia.

Tente o seguinte:

Private Sub TxtLc2_KeyPress(KeyAscii As Integer)

If KeyAscii = vbKeyBack Then
      KeyAscii = 0
      Exit Sub
End If

If Len(TxtLc2.Text) = 2 Then
    If IsNumeric(TxtLc2.Text) Then
        TxtLc2.Text = TxtLc2.Text + "-"
    Else
        TxtLc2.Text = TxtLc2.Text + " "
    End If
    TxtLc2.SelStart = Len(TxtLc2.Text)
End If

KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub

Até mais!
   
Irenko
BELO HORIZONTE
MG - BRASIL
Postada em 15/04/2009 13:10 hs            
DeFreitas, não deu! Sua sugestão travou completamente o backspace, não era para travar.

Como adapto a função abaixo para aceitar numericos e somente as letras C e X? A mesma não da problema com backspace porem é somente para numerico.

Function Campo(obj As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc("0") And _
Keyasc <= Asc("9")) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(obj.Text) = 2 Then
obj.Text = obj.Text + "-"
obj.SelStart = Len(obj.Text)
End If
End If
End Function
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 15/04/2009 14:37 hs            
Assim colega
 
Function Campo(obj As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc("0") And _
Keyasc <= Asc("9") Or Keyasc = 8) Or _
(Keyasc = Asc("C") Or Keyasc = Asc("c")) Or _
(Keyasc = Asc("X") Or Keyasc = Asc("x"))) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(obj.Text) = 2 Then
obj.Text = obj.Text + "-"
obj.SelStart = Len(obj.Text)
End If
End If
End Function
 
   
DeFreitas
SÃO PAULO
SP - BRASIL
Postada em 15/04/2009 14:37 hs            
Boa tarde.

Amigo,

A pressa me impede de tentar outras dicas, mas veja se esse código é útil a você:

'--- Permite digitar apenas números e as letras "C" e "X" ---
Private Sub Text1_KeyPress(KeyAscii As Integer)    
      If (InStr(1, "0123456789" & Chr(vbKeyC) & Chr(vbKeyX) & Chr(vbKeyBack),
             Chr(KeyAscii)) = 0) Then
             KeyAscii = 0
      End If
End Sub

Falou!
     
Irenko
BELO HORIZONTE
MG - BRASIL
Postada em 15/04/2009 16:52 hs            
Marcelo, deFreitas, valeu!!! Adaptei e ficou perfeito.
     
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página