Página 1 de 1

Entrada de dado apenas numérico em um TextBox

MensagemEnviado: 28 Dez 2008 13:29
por MOR_AL
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

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

MensagemEnviado: 28 Dez 2008 15:08
por Rodrigo_P_A
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

MensagemEnviado: 28 Dez 2008 17:18
por MOR_AL
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

MensagemEnviado: 29 Dez 2008 10:49
por MOR_AL
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

MensagemEnviado: 29 Dez 2008 11:09
por Rodrigo_P_A
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.

MensagemEnviado: 29 Dez 2008 14:09
por Jorge_Francisco
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.

MensagemEnviado: 29 Dez 2008 15:18
por otavio luiz
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

MensagemEnviado: 30 Dez 2008 13:40
por MOR_AL
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