FORMATACAO ENQUANTO SE DIGITA

ROGERIOAZEVEDO 17/03/2012 20:26:50
#397393
Boa noite.

Eu tenho formatado as Textbox de valor como Standard, em alguns casos no Textchange ou Lostfocus na caixa. Ha como fazer a formaçao em tempo real? Tipo enquanto a pessoa digita o valor o ponto (.) da milhar e a virgula (,) ir se adequando conforne se digita o valor? Abraços.
MARCELO.TREZE 17/03/2012 21:10:39
#397395
colega até agora a melhor formatação deste tipo é esta

o código abaixo é do colega MATIOLI, e não de minha autoria

***Coloque estes códigos num Módulo:***

Public Sub MascMoeda(ByVal Controle As TextBox)
Dim i As Integer, T As String
With Controle
[txt-color=#007100] [ô]Armazena o Text, para nao causar o evento change a toa[/txt-color]
T = .Text
[txt-color=#007100] [ô]Armazena o SelStart da Dir. para Esq., pois o alinhamento é esq.[/txt-color]
i = Len(T) - .SelStart
[txt-color=#007100] [ô]Tira a virgula da var T[/txt-color]
T = Replace(.Text, [Ô],[Ô], [Ô][Ô])
[txt-color=#007100] [ô]Acrescenta zeros[/txt-color]
If Len(T) < 3 Then T = String(3 - Len(T), [Ô]0[Ô]) & T
[txt-color=#007100] [ô]Monta o nr separando as casas[/txt-color]
T = Mid(T, 1, Len(T) - 2) & [Ô],[Ô] & Mid(T, Len(T) - 1)
[txt-color=#007100] [ô]Formata o nr para tirar os zeros a mais q podem ficar no começo[/txt-color]
T = Format(T, [Ô]#,##0.00[Ô])
[txt-color=#007100] [ô]Verifica se o valor do Text é <> da Var. T (para nao travar no evento Change)[/txt-color]
If .Text <> T Then .Text = T
[txt-color=#007100] [ô]Como mudou o valor do TextBox, tem q voltar o SelStart ao q era antes[/txt-color]
.SelStart = Len(T) - i
End With
End Sub


Public Sub ApenasNrs(ByRef KeyAscii As Integer)
Select Case KeyAscii
[txt-color=#007100] [ô]Se a tecla for numérica (0 - 9) ou o backspace (8)[/txt-color]
Case Asc([Ô]0[Ô]) To Asc([Ô]9[Ô]), 8
[txt-color=#007100] [ô]Se não for numérica[/txt-color]
Case Else
Beep [txt-color=#007100][ô]Som de erro, nao é necessário[/txt-color]
KeyAscii = 0 [txt-color=#007100][ô]Cancela a entrada[/txt-color]
End Select
End Sub


Public Sub SelTudo(ByVal Controle As TextBox)
[txt-color=#007100][ô]Posiciona o cursor no começo[/txt-color]
Controle.SelStart = 0
[txt-color=#007100][ô]Seleciona todo o TextBox[/txt-color]
Controle.SelLength = Len(Controle.Text)
End Sub



========================================
***Para testar as funções, coloque um TextBox (Text1) em um form e cole o código abaixo:***

Private Sub Text1_Change()
MascMoeda Text1[txt-color=#007100] [ô]Para criar a máscara de moeda[/txt-color]
End Sub


Private Sub Text1_GotFocus()
SelTudo Text1[txt-color=#007100] [ô]Para selecionar todo TextBox[/txt-color]
End Sub


Private Sub Text1_KeyPress(KeyAscii As Integer)
ApenasNrs KeyAscii [ô]Para aceitar apenas nrs
End Sub



fica show
ROGERIOAZEVEDO 18/03/2012 13:31:40
#397415
Nao sei o que eu fiz de errado, mas nao funcionou aqui.

Eu criei um projeto novo;
Inseri um textbox1 no formulario;
Colei o codigo acima entre:

Public Class Form1
Codigo
End Class

Apareceram os seguintes erros:
Error 1 [ô]SelStart[ô] is not a member of [ô]System.Windows.Forms.TextBox[ô]. C:\Users\GOAdmin03\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 10 26 WindowsApplication1

Error 2 [ô]String[ô] is a class type and cannot be used as an expression. C:\Users\GOAdmin03\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 14 28 WindowsApplication1

Error 4 [ô]SelStart[ô] is not a member of [ô]System.Windows.Forms.TextBox[ô]. C:\Users\GOAdmin03\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 22 13 WindowsApplication1

Error 5 [ô]SelStart[ô] is not a member of [ô]System.Windows.Forms.TextBox[ô]. C:\Users\GOAdmin03\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 42 9 WindowsApplication1

Error 6 [ô]SelLength[ô] is not a member of [ô]System.Windows.Forms.TextBox[ô]. C:\Users\GOAdmin03\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 44 9 WindowsApplication1
ROBIU 18/03/2012 13:52:57
#397418
é que você está trabalhando com VB.net mas informa no fórum que a dúvida é para VB6. Por isso que o código que Marcelo postou deu erro. Veja esse TextBox com máscara moeda em VB.NET, de TECLA
ROGERIOAZEVEDO 18/03/2012 16:46:17
#397434
Ola,

Roberto,

Me desculpe, posso realmente estar fazendo algo errado, sou novo na programaçao. De fato sou administrador e comecei a fazer algumas pequenas aplicacoes para me auxiliar em alguns demonstrativos. Estou trabalhando com VB no Visual Studio 2010, devo usar o codigo mensionado pelo colega? Abraços.
Tópico encerrado , respostas não são mais permitidas