Entrada de dado apenas numérico em um TextBox

Programação Visual Basic

Moderadores: 51, guest2003

Entrada de dado apenas numérico em um TextBox

Mensagempor MOR_AL » 28 Dez 2008 13:29

Olá pessoal! Sou iniciante em VB (VB6).

Desejo entrar com um valor numérico em uma TextBox.
Transformei a string de entrada em Text1.text, para valor numérico.

V0Str = Text1.text
V0Num = Val(V0Str)

Até aí tudo simples. Durante a execução, entrei com o valor 50 na caixa de texto. Acontece, que sem querer digitei o caracter "t" no meio do valor 50 (ficou 5t0). Apesar do VB6 desconsiderar o caractere "t", e supor que o valor é 50, gostaria de poder identificar quando a string possuir caracteres diferentes de algarismos numéricos e o ponto.

Outra dúvida. É possível uma MsgBox conter mais de uma linha de texto? caso afirmativo, como fazer? (Ok. Descobri! Usar vbCrLf).

Agradeço pelo auxílio.

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Re: Entrada de dado apenas numérico em um TextBox

Mensagempor Rodrigo_P_A » 28 Dez 2008 15:08

MOR_AL escreveu:Olá pessoal! Sou iniciante em VB (VB6).

Desejo entrar com um valor numérico em uma TextBox.
Transformei a string de entrada em Text1.text, para valor numérico.

V0Str = Text1.text
V0Num = Val(V0Str)

Até aí tudo simples. Durante a execução, entrei com o valor 50 na caixa de texto. Acontece, que sem querer digitei o caracter "t" no meio do valor 50 (ficou 5t0). Apesar do VB6 desconsiderar o caractere "t", e supor que o valor é 50, gostaria de poder identificar quando a string possuir caracteres diferentes de algarismos numéricos e o ponto.

Outra dúvida. É possível uma MsgBox conter mais de uma linha de texto? caso afirmativo, como fazer? (Ok. Descobri! Usar vbCrLf).

Agradeço pelo auxílio.

MOR_AL



Você pode tentar identificar o caractere pressionado na hora da digitação, dentro do Evento KeyPress testar o caractere, e se não for o que vc quer, descartar, exemplo:

Private Sub Text1_KeyPress(KeyAscii As Integer)
' verifico se é número
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
' não é número
' verifico se é o backspace
If KeyAscii = 8 Then Exit Sub ' aceito
If KeyAscii = Asc(".") Then Exit Sub 'aceito
KeyAscii = 0 ' descarto
End If

End Sub


Mas se eu fosse você, eu partiria para o Vb.net ou VC#.net

você pode baixar as versões express na internet.

a plataforma .Net é muito melhor
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor MOR_AL » 28 Dez 2008 17:18

Olá Rodrigo_P_A.

Você pode tentar identificar o caractere pressionado na hora da digitação, dentro do Evento KeyPress testar o caractere, e se não for o que vc quer, descartar, exemplo:

Essa idéia é bem melhor que a que eu estava usando. Eu usava o Evento Change. Quando, precariamente, identificava um caracter diferente dos numéricos ou ponto, eu reescrevia o valor correto em Text1.text. Isso chamava a rotina outra vez, de dentro da mesma rotina.

Rodrigo. Valeu pela dica. O chato de querer ser autodidata tem suas desvantagens. Fiquei empacado neste ponto um tempão.

Quanto a mudar de plataforma ou aplicativo, seria interessante se eu tivesse que usar o programa profissionalmente. Meu caso é de um uso esporádico, vez ou outra. Soma-se a isso o fato de conhecer alguma coisa de QBasic, quase idêntico aos códigos da linguagem do VB. Manias...
[]'s
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor MOR_AL » 29 Dez 2008 10:49

Olá Rodrigo_P_A.

Puxa :!:
Eu comecei a fazer uma rotina que aceite apenas valores numéricos na TextBox.
Caramba. O buraco é lá embaixo mesmo. :(
Se você considerar que não é permitido entrar com letras e mais de um ponto, já não é tão simples obter o valor. Quando você considera a tecla backspace apenas, desconsiderando as insert, home, delete e end, aí a coisa fica preta.
No endereço abaixo consta um fluxograma PRELIMINAR, do que é necessário considerar, para que somente números possam aparecer e serem guardados em uma variável.
http://i100.photobucket.com/albums/m36/ ... co50-1.jpg

Será que o VB já tem algo pronto?
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor Rodrigo_P_A » 29 Dez 2008 11:09

MOR_AL escreveu:Olá Rodrigo_P_A.

Puxa :!:
Eu comecei a fazer uma rotina que aceite apenas valores numéricos na TextBox.
Caramba. O buraco é lá embaixo mesmo. :(
Se você considerar que não é permitido entrar com letras e mais de um ponto, já não é tão simples obter o valor. Quando você considera a tecla backspace apenas, desconsiderando as insert, home, delete e end, aí a coisa fica preta.
No endereço abaixo consta um fluxograma PRELIMINAR, do que é necessário considerar, para que somente números possam aparecer e serem guardados em uma variável.
http://i100.photobucket.com/albums/m36/ ... co50-1.jpg

Será que o VB já tem algo pronto?
MOR_AL


tem sim, tem que ver, acho que é o Masked Edit Textbox nele vc coloca que só quer números e ele faz tudo

pra fazer manualmente é do jeito que eu te falei mesmo.

visite este site: http://www.macoratti.net/

ele é muito bom, e o cara ensina um monte de coisas.
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor Jorge_Francisco » 29 Dez 2008 14:09

Sim, no MaskEdit você cria uma mascara e o usuário tem que digitar no formato estabelecido da mascara, se tentar digitar qualquer outra coisa não aceita.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor otavio luiz » 29 Dez 2008 15:18

Abaixo uma função que já utilizei para isto:


'Coloque o comando a seguir no evento KeyPress da textbox:
' KeyAscii = SóNúmeros(KeyAscii)

Function SóNúmeros(Key As Integer) As String
'selecione os caracteres que desejar
Const Números$ = ",0123456789"
SóNúmeros = Key
If Key <> 8 Then 'conferindo se é backspace
'vê se é um caracter permitido
If InStr(Números$, Chr(Key)) = 0 Then
SóNúmeros = 0
End If
End If
End Function
Lembre-se, zona de Fresnel não é nenhuma franquia de puteiro.
Avatar do usuário
otavio luiz
Byte
 
Mensagens: 257
Registrado em: 11 Out 2006 13:56
Localização: Barretos - SP, terra de Peão

Mensagempor MOR_AL » 30 Dez 2008 13:40

Olá pessoal!

Abri um software que também possui entrada para dados numéricos. No local para digitar valores pude entrar com outros caracteres também, além de permitir, praticamente, entrar com um montão deles. Fica deselegante né! :?

Rodrigo e Jorge_Francisco.

Vou pesquisar sobre esta dica. Grato.

Otavio luiz.

Vou usar a sua idéia e tentar adaptar para o meu caso. Grato.

Acho que estas dicas encerram o tópico. Grato a todos.

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ


Voltar para Visual Basic

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes

x