Tiago Posted March 8, 2006 at 11:39 PM Report #17503 Posted March 8, 2006 at 11:39 PM Olá Tive um Teste de Programação ! em Que teriamos de Fazer o Seguinte Programa: Depois de 5 numeros inseridos Teremos de Ver Qual o Maior e Menor Numero!! e ai ele Passava para outra Form em Ke teria : O numer Maior é : O Numero Menor é: O meu Probema axo que ainda não Explicito aki no Forum, mas se Foi nos tutorias Peço desculpa pela Duplicação ! Para o utilizador não digitar Letras fiz o seguinte codigo ( Claro depois de ter feito mal no teste ) considerando as Text1, Text2,Text3,Text4,Text5. Então depois para não deixar introduzir Letras fiz um Case SelectCase Text1.text Private Sub cmd1_Click() Select Case Text1.Text Case 0 Case 1 Case 2 Case 3 Case 4 Case 5 Case 6 Case 7 Case 8 Case 9 Case Else a = MsgBox("ERRO SÓ PODE INSERIR NÚMEROS", vbOKOnly + vbOKCancel, "ERRO") End Select End Sub Mas também Se pode Fazer com o Isnumeric ! mas Tipo para ele não poder Digitar numero Negativos? Fasso o mesmo Case ? case -9 case -2 .... Se alguem me poder ajudar !! Tipo com uma maneira mais facil pois eu nos testes tenhu 45 Minutos para fazer este tipo de Exercicios !! um abraço e se alguem me poder ajudar Fico agradecido
Chicomaravilha Posted March 9, 2006 at 02:22 AM Report #17511 Posted March 9, 2006 at 02:22 AM Espero com isto poder dar-te uma ajuda. No evento da Textbox_KeyPress, verificas o código ascii da tecla pressionada, se corresponde a uma letra, ou se corresponde a ‘-‘. Então mandas uma mensagem de erro e limpas o campo. O código que coloquei não foi testado pois não tenho o VB6 instalado. Mas é mais ou menos isto. Private Sub Text_KeyPress(KeyAscii As Integer) If( KeyAscii < = 48 Or KeyAscii >= 57) Then Form.Text1.Text="" Form.Text1.SetFocus End If PS: Confirma os valores do código Ascii.
David Pintassilgo Posted March 9, 2006 at 11:08 AM Report #17525 Posted March 9, 2006 at 11:08 AM Chicomaravilha, olha muito bem pensado sim senhor... 🙂 cool stuffs to check. http://blog.zxcoders.com//
Tiago Posted March 9, 2006 at 09:48 PM Author Report #17596 Posted March 9, 2006 at 09:48 PM Chicomaravilha obrigada pela dica para ser sinsero contigo ja tou a ver como é isso e até ja tou a testar mas isso é muito novo para mim pedia-te se fizesses esse favor de me esplicar mais promoneralizado ou como é essa palavra ! tipo como ver esse valores da Ascii !! se não te importares! se não o fizeres não tem kualker problema é na boa kualker maneira obrigada ja aprende como s efaz !! so não sei ao serto o ke fiz se é ke me percebes!! xau um abraço
vbmaster Posted March 9, 2006 at 09:52 PM Report #17597 Posted March 9, 2006 at 09:52 PM O código dele, ao ser posto no evento keypress, vai testar uma condição sempre que tentares inserir na texbox qualquer letra. Ora a expressão teste vê se o que lá vais pôr se trata só de números, e caso seja, escreves, se não...por e simplesmenta não aparece nada na textbox... O código ASCII permitido vai desde 48 (que é o 0) a 57 (que é o 9) 🙂
Chicomaravilha Posted March 9, 2006 at 11:23 PM Report #17606 Posted March 9, 2006 at 11:23 PM Chicomaravilha obrigada pela dica para ser sinsero contigo ja tou a ver como é isso e até ja tou a testar mas isso é muito novo para mim pedia-te se fizesses esse favor de me esplicar mais promoneralizado ou como é essa palavra ! tipo como ver esse valores da Ascii !! se não te importares! se não o fizeres não tem kualker problema é na boa kualker maneira obrigada ja aprende como s efaz !! so não sei ao serto o ke fiz se é ke me percebes!! xau um abraço Boa noite, Ora bem o que o vbmaster disse está correcto, o código está efectivamente colocado no evento keypressed. Vou tentar explicar-te linha a linha o que está a fazer o código. Cá vai Assim que carregas num tecla qualquer isso vai despoletar um evento que no caso do VB é keypressed (isto pq se trata de uma caixa de texto). Este evento recebe uma variável (neste caso um inteiro). O código agarra na variável (KeyAscii) e verifica qual o valor que o mesmo contem nesse momento. Compara com o valor 48 (valor asccii para o 0) e compara com o valor 57 (valor ascii para 9). Caso seja menor que 48 (0) ou maior que 57(9) o que vai fazer é limpar todo o conteúdo da caixa de texto em causa. Para além disso coloca o cursor na caixa de texto. Chamo à atenção que existem mais maneiras (muitas) de fazeres isso.
Tiago Salgado Posted March 10, 2006 at 02:35 PM Report #17633 Posted March 10, 2006 at 02:35 PM Mas atenção q dessa maneira q o Chicomaravilha apresentou vai-te funcionar correctamente se for o primeiro caracter a ser inserido. Qd é indicado o textbox.text = "" ele vai apagar o conteudo que lá está e daí só funcionar qd a text está vazia e o primeiro caracter n for os que sao pretendidos. Para isso funcionar correctamente, substitui o textbox.text = "" por KeyAscii = 0. Cumps []
Chicomaravilha Posted March 10, 2006 at 03:24 PM Report #17647 Posted March 10, 2006 at 03:24 PM Boa tarde Tu desculpa mas segundo julgo perceber tu disseste que o código só funciona se a tecla errada for à 1ª vez. Eu penso que não estás correcto pois por cada vez que carregas num letra o código é executado. E sempre que tu carregas numa tecla que não é um numero ele apaga tudo o que está dentro da caixa de texto. Lembro no entanto que neste momento não consigo testar em virtude de não ter o VB6 instalado. Cumprimentos
Tiago Salgado Posted March 12, 2006 at 01:28 AM Report #17884 Posted March 12, 2006 at 01:28 AM E sempre que tu carregas numa tecla que não é um numero ele apaga tudo o que está dentro da caixa de texto. Exactamente, por isso é que não está correcto. Imagina o seguinte exemplo: Tens a textbox vazia e vais inserir o primeiro caracter...carregas em "a"...ele vai executar o codigo e vai verificar que não se encontra dentro daquele intervalo de códigos ASCII, e assim sendo vai apagar o que está na textbox, ficando vazia. Irá ficar como queremos mas porque não tinha nenhum caracter inserido. Agora imagina q tens a textbox preenchida com "123456" e vais carregar noutra tecla, por exempo o P...ele vai novamente ao evento KeyPress e vai efectuar as instruções q lá tem, e vai verificar que o código ASCII do P não corresponde ao intervalo que tens lá definido, ou seja, vai fazer novamente o textbox.text = "", ou seja, vai apagar o conteudo da textbox...resultado ...em vez de manter o "123456" vai ficar vazia. A alterçao que eu tinha indicado que deveria ser feita ( keyascii = 0 ) é mesmo por essa razao, em vez de apagar o conteudo, simplesmente ignora a tecla e não a envia, permitindo assim manter os valores anteriormente inseridos. Espero ter-te esclarecido Cumps []
soXfoR Posted March 12, 2006 at 04:36 AM Report #17891 Posted March 12, 2006 at 04:36 AM Penso que assim ficaria melhor: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 8 Then Exit Sub End If If (KeyAscii <= 47) Or (KeyAscii >= 58) Then KeyAscii = 2 End If Assim desta forma permite a introdução do 0, e também que se apague os caracteres. Valor 8 em ASCii = Backspace. Em vez do Text1.text = "" ou o KeyAscii=0 é preferivel usar o KeyAscii=2, ou seja, não irá apagar o texto existente como nos outros 2 nem irá aparecer lá um 0 ou um espaço. 😄 Cumpz.
Chicomaravilha Posted March 12, 2006 at 03:43 PM Report #17931 Posted March 12, 2006 at 03:43 PM Em 12/03/2006 às 02:28, Tiago Salgado disse: Exactamente, por isso é que não está correcto. Imagina o seguinte exemplo: Tens a textbox vazia e vais inserir o primeiro caracter...carregas em "a"...ele vai executar o codigo e vai verificar que não se encontra dentro daquele intervalo de códigos ASCII, e assim sendo vai apagar o que está na textbox, ficando vazia. Irá ficar como queremos mas porque não tinha nenhum caracter inserido. Agora imagina q tens a textbox preenchida com "123456" e vais carregar noutra tecla, por exempo o P...ele vai novamente ao evento KeyPress e vai efectuar as instruções q lá tem, e vai verificar que o código ASCII do P não corresponde ao intervalo que tens lá definido, ou seja, vai fazer novamente o textbox.text = "", ou seja, vai apagar o conteudo da textbox...resultado ...em vez de manter o "123456" vai ficar vazia. A alterçao que eu tinha indicado que deveria ser feita ( keyascii = 0 ) é mesmo por essa razao, em vez de apagar o conteudo, simplesmente ignora a tecla e não a envia, permitindo assim manter os valores anteriormente inseridos. Espero ter-te esclarecido Cumps [] Boas Tiago, efectivamente o códifo que está escrito apaga o conteudo da caixa assim que carregas numa letra. Mas isso para mim era claro, desde do inicio. Cumprimentos
Tiago Salgado Posted March 13, 2006 at 10:10 AM Report #18051 Posted March 13, 2006 at 10:10 AM Em 12/03/2006 às 05:36, soXfoR disse: Penso que assim ficaria melhor: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 8 Then Exit Sub End If If (KeyAscii <= 47) Or (KeyAscii >= 58) Then KeyAscii = 2 End If Assim desta forma permite a introdução do 0, e também que se apague os caracteres. Valor 8 em ASCii = Backspace. Em vez do Text1.text = "" ou o KeyAscii=0 é preferivel usar o KeyAscii=2, ou seja, não irá apagar o texto existente como nos outros 2 nem irá aparecer lá um 0 ou um espaço. 😉 Cumpz. Deves tar a fazer uma certa confusao, pois o KeyAscii = 0 não iria por nenhum 0 nem nenhum espaço, simplesmente não iria fazer nada mais que ignorar a tecla q foi introduzida. Quanto ao codigo que deste para permitir tambem o backspace, talvez fosse melhor alternativa usar o If Not... Tipo... If Not Keyascii = 8 and Keyascii = 13 and ... (todas as que quiseres q se possam usar) then keyascii = 0 End if Talvez desta forma seria melhor teres codigo do genero: If KeyAscii = 8 Then Exit Sub End If e If KeyAscii = 13 Then Exit Sub End If Em 12/03/2006 às 16:43, Chicomaravilha disse: Boas Tiago, efectivamente o códifo que está escrito apaga o conteudo da caixa assim que carregas numa letra. Mas isso para mim era claro, desde do inicio. Cumprimentos Ok, mas pela resposta que deste anteriormente deu a entender que o facto de apagar a text toda era mesmo preciso, foi por isso que tentei explicar-te que não dava. Mas entao se sabias tamos esclarecidos 😄
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now