MASCARA DINAMICA TEXTBOX

VILANOVA 20/06/2012 11:40:14
#404544
Senhores muito bom dia, estou com uma duvida de como executar a rotina, algum dos amigos pode me ajudar por favor? veja so, eu tenho um parametro no sistema, (MASCARA DE ESTRUTURA) esta mascara é definida como numeros 9 ex : 9.9.9.99.9999 , so que estou precisando o seguinte, no cadastro no campo estrutura o sistema dinamicamente ir colocando os pontos para mim e nao deixar eu sair da mascara que o cliente definiu, ex : quando eu digitar 1 o sistema ja colocar o ponto para o proximo codio 1. , e assim sucessivamente..
MARCELO.TREZE 20/06/2012 12:14:07
#404550
bom vamos ver se ajudo

Function MascaraDinamica(obj As TextBox, Keyasc As Integer)
[txt-color=#007100][ô] Primeiro so permitiremos numeros e o Backspace no campo com o if abaixo[/txt-color]
If Not ((Keyasc >= Asc([Ô]0[Ô]) And Keyasc <= Asc([Ô]9[Ô])) Or Keyasc =8) then
Keyasc = 0
Exit Function
End If

If Keyasc <>8 Then [txt-color=#007100][ô] se não for o backspace[/txt-color]
If Len(obj.Text) = 1 Or _
Len(obj.Text) = 3 Or _
Len(obj.Text) = 5 Or _
Len(obj.Text) = 8 Then
obj.Text = obj.Text & [Ô].[Ô]
obj.SelStart = Len(obj.Text)
End If
End If
End Function


bom é simples de usar basta colocar no evento keypress do textbox que receberá esta mascara

Exemplo

Private Sub Text1_KeyPress(KeyAscii As Integer)
MascaraDinamica Text1, KeyAscii
End sub


ps fiz o código aqui e não testei teste, este é o caminho



ADILSOO 20/06/2012 14:04:36
#404562
Eu usei isso uma vez, só que eu ia contando os caracteres
Ex: TotalCaracteres = 1 então text = text & [Ô].[Ô] se TotalCaracteres = 3 então text = text & [Ô].[Ô] e assim vai, lembrando que esse não é o código, é só a logica da coisa, até...
LUIZCOMINO 20/06/2012 17:30:40
#404580
Sub Mascarar(Text As TextBox, Mascara As String, KeyAscii As Integer)
[ô]Luiz Comino 20/06/2012
If vbKeyBack = KeyAscii Then Exit Sub
Text.MaxLength = Len(Mascara)

Dim MtzDigitos() As String
Dim MtzMsk() As String
Dim Qtd As Integer
Dim i, x As Integer

For i = 1 To Len(Mascara)
x = x + 1
If Mid(Mascara, i, 1) <> [Ô]#[Ô] Then
Qtd = Qtd + 1
ReDim Preserve MtzDigitos(Qtd)
ReDim Preserve MtzMsk(Qtd)
MtzDigitos(Qtd) = x - 1
MtzMsk(Qtd) = Mid(Mascara, i, 1)
End If
Next
For i = 1 To UBound(MtzMsk)
If Len(Text) = MtzDigitos(i) Then
Text = Text & MtzMsk(i)
Text.SelStart = Len(Text1)
End If
Next

End Sub


Para Utlizar --------

Private Sub Text1_KeyPress(KeyAscii As Integer)
Mascarar Text1, [Ô]#.#.#.##.#####[Ô], KeyAscii
End sub
MARCELO.TREZE 20/06/2012 18:59:11
#404588
Luiz de Boa velho....


.......essa sub foi f.... arrebentou, como nunca pensei nisso, rs

show de bola mesmo muito pratica pode ser usada pra tudo meu.

parabens

RICKSOUSA 21/06/2012 00:20:09
#404602
tbm pode ser feito assim né:


[txt-color=#007100][ô]Coloque este código no evento change do textbox[/txt-color]
[txt-color=#0000f0] If Len(Text1) = 1 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 3
End If
If Len(Text1) = 3 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 5
End If
If Len(Text1) = 5 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 7
End If
If Len(Text1) = 8 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 10
End If
Text1.MaxLength = 13[/txt-color][txt-color=#007100] [ô] se no caso tiver que colocar apenas 13 caracteres dentro do text[/txt-color]
LUIZCOMINO 21/06/2012 09:11:26
#404610
Opa Marcelo receber elogios de você é uma grande honra muito obrigado!
MARCELO.TREZE 21/06/2012 14:46:00
#404640
Sem rasgação de ceda colega, mas quando a coisa é bem feita tem deve ser elogiada, esta sub que você postou é muito boa, é pratica demais, ela pode ser usada pra tudo mudando apenas a mascara tipo

(##) ####-#### [ô] telefone
###.###.###-## [ô] cpf
#####-### [ô] cep

etc

só tenho de elogiar mesmo muito boa se não se incomodar estou passando a usa-la em meus desenvolvimentos

abraço

LUIZCOMINO 21/06/2012 14:59:01
#404642
imagina, pode usar sem problemas, o conhecimento foi feito para ser passado!
RICKSOUSA 21/06/2012 16:36:22
#404645
é da hora mesmo, estive testanto e vi que fica bem melhor.

basta colocar a mascara como quiser

Private Sub Text1_KeyPress(KeyAscii As Integer)
Mascarar Text1, [txt-color=#e80000][Ô]#.#.#.##.#####[Ô][/txt-color], KeyAscii [txt-color=#007100][ô]vc pode colocar a mascara do modo que ser ai dentro né[/txt-color]

telefone = [Ô](##)####-####
cpf = ###.###.###-##
RG = ##.###.###-#
e qualquer mascara que quiser ultilizar...
End sub


quem sabe, sabe!
Tópico encerrado , respostas não são mais permitidas