pasim Posted May 4, 2005 Report Share Posted May 4, 2005 Bom dia! Amigos... Tenho um campo para digitação de n° de contrato, e este contrato tem um formato padrão assim T9999F quero fazer uma máscara que impeça do usuário digitar errado... Ou seja, no lugar da letra não aceite n° e vice-versa... Paulo Clipper 5.3b/FW2.4/WS pasimplicio@yahoo.com.br MSN: pasimplicio@hotmail.com Editado por - pasim on 04/05/2005 12:14:11 Quote Link to comment Share on other sites More sharing options...
vagner Posted May 4, 2005 Report Share Posted May 4, 2005 Olá Paulo, "@! A9999A" Vagner Wirts Clipper 5.2 Lib 5.3 - Blinker 5.0 FW 2.0, Harbour 43.0 (Flex), xHarbour 99.1 99.2 99.3 (Simplex) FW 2.5 Quote Link to comment Share on other sites More sharing options...
pasim Posted May 4, 2005 Author Report Share Posted May 4, 2005 Valeu Vagner! Paulo Clipper 5.3b/FW2.4/WS pasimplicio@yahoo.com.br MSN: pasimplicio@hotmail.com Quote Link to comment Share on other sites More sharing options...
pasim Posted May 18, 2005 Author Report Share Posted May 18, 2005 Amigos me ajudem nesta também. Coloquei a seguinte máscara picture "99/99" quero forçar o usuário digitar os números, ou seja não deixar sair do get se ele não digitar alguma coisa, parece pergunta boba, deve ser mesmo... para quem sabe! Já tentei de diversas formas e não consegui... Paulo. Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted May 18, 2005 Report Share Posted May 18, 2005 OLA Eu fiz assim para o campo (entre com a data); @1,6 get ndata of odlgClien valid campovazio (ndata ) * STATIC FUNCTION Campovazio( ccampo ) IF EMPTY( cCampo ) ALERT( "Este campo nao pode ser vazio" ) RETURN( .F. ) ENDIF RETURN( .T. ) ICO CORUMBA/MS Editado por - ico on 18/05/2005 18:41:05 Editado por - ico on 18/05/2005 18:42:21 Quote Link to comment Share on other sites More sharing options...
Kleyton Posted May 19, 2005 Report Share Posted May 19, 2005 Assim também dá certo... @1,6 get ndata of odlgClien valid !empty(ndata ) Kleyton Clipper5.2E+Clipper5.3b+Blink7+FW2.0d cleitonbala@bol.com.br Quote Link to comment Share on other sites More sharing options...
vagner Posted May 19, 2005 Report Share Posted May 19, 2005 Olá Paulo @ 01,01 Get oGet var cGet Pict "99/99" Valid(cGet#" / ") vc está definindo ele com a barra então não dá para comparar com o empty(), pois sempre terá a barra no meio e nunca será vazio Vagner Wirts Clipper 5.2 Lib 5.3 - Blinker 5.0 FW 2.0, Harbour 43.0 (Flex), xHarbour 99.1 99.2 99.3 (Simplex) FW 2.5 Quote Link to comment Share on other sites More sharing options...
pauloaraujo Posted May 19, 2005 Report Share Posted May 19, 2005 Paulo, Além de: @ 01,01 Get oGet var cGet Pict "99/99" Valid cGet#" / " Acrescente: @ 01,01 Get oGet var cGet Pict "99/99" Valid cGet#" / " .and. at(" ",cGet)=0 Porque, deixando somente cGet#" / ", o usuário pode digitar por exemplo "01/9 " e irá passar. Se for mes/ano que voce estiver tratando, acrescente ainda: .and. val(subs(cGet,1,2))>=1 .and. val(subs(cGet,1,2))<=12 Paulo/CONTATO SISTEMAS Clipper53b /FW26 /Blinker70 Quote Link to comment Share on other sites More sharing options...
pasim Posted May 19, 2005 Author Report Share Posted May 19, 2005 Amigos, Obrigado a todos, fiz assim: STATIC FUNCTION Campomes( Mea ) IF Mea = ' / ' .or. (Empty(Substr(Mea,1,2))) .or. (Empty(Substr(Mea,4,2))) MsgStop( "Digite o mês e ano corretos!","Atenção") RETURN(.F.) ENDIF ...e retornou o resultado que eu queria. "Xará" vc tem razão vou melhorar se preciso... Valew a todos! Editado por - pasim on 19/05/2005 09:09:54 Quote Link to comment Share on other sites More sharing options...
pauloaraujo Posted May 19, 2005 Report Share Posted May 19, 2005 Paulo, Sem querer ser chato, mas sendo. Do seu jeito, se o usuário digitar '00/00' vai passar. Quando se trata de MES/ANO, precisa algo mais na função. Paulo/CONTATO SISTEMAS Clipper53b /FW26 /Blinker70 Quote Link to comment Share on other sites More sharing options...
pasim Posted May 19, 2005 Author Report Share Posted May 19, 2005 Oh! Paulo... chato que nada! já fiz do jeito que orientastes e ficou bacana! Paulo Clipper 5.3b/FW2.4/WS pasimplicio@yahoo.com.br MSN: pasimplicio@hotmail.com Quote Link to comment Share on other sites More sharing options...
conpete Posted May 20, 2005 Report Share Posted May 20, 2005 Paulo Não é uma boa polÃtica usar campo dia/mês, mas, na premissa que o ano é o corrente ou identificado de outro modo, você deve fazer uma critica da data. Aqui vai uma sugestão que pode ser melhorada ************************************** diames="0000" @10,10 get diames pict "@r 99/99" valid chdiames(diames) read func chdiames para _dt1 local vrmes vlmes=val(substr(_dt1,3,2)) vldia=val(substr(_dt1,1,2)) ano=year(date()) do case case vlmes = 0 .or. vlmes > 12 return .f. case vlmes=2 if int(ano/4)-(ano/4) = 0 if vldia < 30 .and. vldia> 0 return .t. endif else if vldia < 29 .and. vldia> 0 return .t. endif endif return .f. case vlmes = 1 .or. vlmes = 3 .or. vlmes = 5 .or. vlmes = 7 .or. vlmes = 8 .or. vlmes = 10 .or. vlmes = 12 if vldia < 32 .and. vldia > 0 return .t. endif case vlmes = 4 .or. vlmes = 6 .or. vlmes = 9 .or. vlmes = 11 if vldia < 31 .and. vldia > 0 return .t. endif endcase return .f. ************************************** Mangueira Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted May 20, 2005 Report Share Posted May 20, 2005 Ola. no meu exemplo acima. antes de return(.T.) coloquei isso if variaval="00/00" alert("Digitação inválida") return .f. endif return .t. funcionou, ele faz duas pesquisas na mesma function abraços ICO CORUMBA/MS ICO Quote Link to comment Share on other sites More sharing options...
aldreks Posted May 20, 2005 Report Share Posted May 20, 2005 Uma outra opção: WPERIODO:=SPACE(4) @ 0,0 SAY [PERÃODO:] GET WPeriodo PICT[@R 99/99] VALID (CHKDATA(WPERIODO)) FUNCTION CHKDATA(PAR) ********************* IF EMPTY(PAR) ELSE IF LEFT(PAR,2) < [01] .OR. LEFT(PAR,2) > [12] ERRO([Mês inválido. Tecle algo!]) RETURN(.F.) ENDIF IF RIGHT(PAR,4) < [0001] .OR. RIGHT(PAR,4) > [2999] ERRO([Ano inválido. Tecle algo!]) RETURN(.F.) ENDIF ENDIF RETURN(.T.) * Desta forma vc economiza um caracter "/", colocando-o na máscara. E a função fica genérica. É só passar o parâmetro. * A validade de ano vc estabelece. Sds. ** citação:Amigos me ajudem nesta também. Coloquei a seguinte máscara picture "99/99" quero forçar o usuário digitar os números, ou seja não deixar sair do get se ele não digitar alguma coisa, parece pergunta boba, deve ser mesmo... para quem sabe! Já tentei de diversas formas e não consegui... Paulo. id=quote>id=quote>------------------------- qadoshy@hotmail.com (Recife-PE) Clipper 5.3b/BLinker7/FW "Sábio é aquele que ensina para saber mais. (Desconhecido)" Quote Link to comment Share on other sites More sharing options...
aldreks Posted May 20, 2005 Report Share Posted May 20, 2005 perdão, tinha Ãdo em Clipper. Agora vai. ** citação:Uma outra opção: WPERIODO:=SPACE(4) @ 0,0 SAY [PERÃODO:] GET WPeriodo PICT[@R 99/99] VALID (CHKDATA(WPERIODO)) FUNCTION CHKDATA(PAR) ********************* IF EMPTY(PAR) MSGALERT([Entre com o perÃodo.]) RETURN(.F.) ELSE IF LEFT(PAR,2) < [01] .OR. LEFT(PAR,2) > [12] MSGALERT([Mês inválido!]) RETURN(.F.) ENDIF IF RIGHT(PAR,4) < [0001] .OR. RIGHT(PAR,4) > [2999] MSGALERT([Ano inválido!]) RETURN(.F.) ENDIF ENDIF RETURN(.T.) * Desta forma vc economiza um caracter "/", colocando-o na máscara. E a função fica genérica. É só passar o parâmetro. * A validade de ano vc estabelece. Sds. ** citação:Amigos me ajudem nesta também. Coloquei a seguinte máscara picture "99/99" quero forçar o usuário digitar os números, ou seja não deixar sair do get se ele não digitar alguma coisa, parece pergunta boba, deve ser mesmo... para quem sabe! Já tentei de diversas formas e não consegui... Paulo. id=quote>id=quote>------------------------- qadoshy@hotmail.com (Recife-PE) Clipper 5.3b/BLinker7/FW "Sábio é aquele que ensina para saber mais. (Desconhecido)" id=quote>id=quote>------------------------- qadoshy@hotmail.com (Recife-PE) Clipper 5.3b/BLinker7/FW "Sábio é aquele que ensina para saber mais. (Desconhecido)" Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.