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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Função para valor monetário
Perci
MATÃO
SP - BRASIL
ENUNCIADA !
Postada em 05/02/2009 16:46 hs            
Olá, pessoal, hà alguns dias atrás, eu postei aqui uma dúvida sobre como transformar uma função que eu tinha em VB 6 para o VB.NET na qual eu digitava os valores e a vírgula e o ponto apareciam automaticamente.
Pois, não é que depois de muito tempo e muita dedicação eu consegui uma forma de fazer isso. Pode ser que precise de alguma implementação, mas para quem está começando agora com o VB.NET até que já é um bom passo dado. Eis a forma que eu fiz:
No módulo:
 
Imports str = Microsoft.VisualBasic.Strings
Imports System.Windows.Forms.TextBox
 
Function CampoValor(ByVal obj As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
    If Len(obj.Text) = 10 Then
        e.KeyChar = ""
        e.Handled = False
        Exit Function
    End If
    If Len(obj.Text) = obj.SelectionLength Then
        If e.KeyChar = Chr(13) Or e.KeyChar = Chr(27) Then
            Exit Function
        Else
            obj.Clear()
            Exit Function
            End If
        End If
        If e.KeyChar = Chr(8) Then
            ' se campo for vazio, não faz nada
            If Len(obj.Text) = 0 Then
                Exit Function
            Else
                ' deleta o número à esquerda do cursor
                obj.Text = str.Left(obj.Text, Len(obj.Text) - 1)
                obj.SelectionStart = Len(obj.Text)
            End If
        End If
        If Not IsNumeric(e.KeyChar) Then
            e.KeyChar = ""
        Else
            If Len(obj.Text) > 1 Then
                obj.Text = str.Replace(obj.Text, ",", "")
                obj.Text = str.Left(obj.Text, Len(obj.Text) - 1) & "," & str.Right(obj.Text, 1)
                obj.SelectionStart = Len(obj.Text)
            End If
            If Len(obj.Text) = 6 Then
                obj.Text = str.Replace(obj.Text, ",", "")
                obj.Text = str.Mid(obj.Text, 1, 1) & "." & str.Mid(obj.Text, 2, 3) & "," & str.Mid(obj.Text, 5, 2)
                obj.SelectionStart = Len(obj.Text)
            End If
            If Len(obj.Text) = 8 Then
                obj.Text = str.Replace(obj.Text, ",", "")
                obj.Text = str.Replace(obj.Text, ".", "")
                obj.Text = str.Mid(obj.Text, 1, 2) & "." & str.Mid(obj.Text, 3, 3) & "," & str.Mid(obj.Text, 6, 2)
                obj.SelectionStart = Len(obj.Text)
            End If
            If Len(obj.Text) = 9 Then
                obj.Text = str.Replace(obj.Text, ",", "")
                obj.Text = str.Replace(obj.Text, ".", "")
                obj.Text = str.Mid(obj.Text, 1, 3) & "." & str.Mid(obj.Text, 4, 3) & "," & str.Mid(obj.Text, 7, 2)
                obj.SelectionStart = Len(obj.Text)
            End If
        End If
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "." And Not e.KeyChar = "," Then
            e.Handled = True
        End If
    End Function
End Module
 
Para chamar a função, no evento KeyPress da TextBox, digita a linha:
CampoValor(TextBox1, e)
onde TextBox1 é a TextBox que receberá a digitação.
Espero ter ajudado alguém com essa função.
Até mais.
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



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