evertonlb Posted October 22, 2014 Report Share Posted October 22, 2014 Pessoal.. to refazendo um sistema em Clipper, em FW. refazendo porque estou tirando coisas que eram desnecessárias, arrumando coisas que precisava e colocando outras que não tinha. Mas no software em Clipper em tenho um menu de relatórios de conferencia e auditoria... Este menu se encontra numa função, e dentro desta função ainda tem uma senha, para só então liberar o acesso ao menu.. Até ofereci outra opção, mas os cliente querem que seja exatamente igual ao do Clipper... o código em Clipper é o seguinte. local cTec1 := inkey(0) local cTec2 := inkey(0) local cTec3 := inkey(0) local cTec4 := inkey(0) * local cQual := "8789" * if upper( chr( cTec1 ) ) + upper( chr( cTec2 ) ) + upper( chr( cTec3 ) ) +; upper( chr( cTec4 ) ) # str( cQual, 4, 0 ) return NIL else...... Fiz uma pesquisa no forum e encontrei alguns tópicos, tentei colocar eles em prática, porem sem sucesso... Como faço para colocar isso dentro de uma função em FW? Att. Everton Quote Link to comment Share on other sites More sharing options...
aferra Posted October 22, 2014 Report Share Posted October 22, 2014 Bem vc não pode colocar um get para digitarem? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 22, 2014 Report Share Posted October 22, 2014 Mostre um display de como fica essa geringonça ai... Quote Link to comment Share on other sites More sharing options...
evertonlb Posted October 22, 2014 Author Report Share Posted October 22, 2014 Pois é Alessandro, eu usei o "agora terá que ser assim" coloquei o password para aparecer os asteriscos e tals... mas o cara ficou com aquele olhar de "poxa vida.. não gostei nada disso!" Então, acho que deve haver alguma forma de fazer como no clipper. essa "geringonça", não mostra nada Kapiaba... entra na função e fica esperando 4 teclas serem digitadas... depois compara as 4 digitadas com a senha que o cara definiu... Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 22, 2014 Report Share Posted October 22, 2014 Veja o comando PASSWORD do Five com encrypt / decrypt e basta invisibilizar o Objeto GET dentro do ACTIVATE DIALOG ao digitar aparecerá somente os asteriscos da mascara. ON INIT oGet:Hide() Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 22, 2014 Report Share Posted October 22, 2014 eu faria assim: // Small sample showing how to request a password previous to main window #include "FiveWin.ch" static oWnd //----------------------------------------------------------------------------// function Main() if lGetPassword() DEFINE WINDOW oWnd TITLE "Main" ACTIVATE WINDOW oWnd ; VALID MsgYesNo( "Want to end ?" ) endif return nil //----------------------------------------------------------------------------// function lGetPassword() local oDlg, oGet, oFont local cPassword := "8789" // := Space( 10 ) // Senha local nTries := 0 local lGo := .f. DEFINE FONT oFont NAME "Tahoma" SIZE 0, -12 DEFINE DIALOG oDlg ; FROM 5, 5 TO 20, 50 ; TITLE "Please Identify" ; FONT oFont @ 1, 2 SAY "Write FiveWin to go ahead..." OF oDlg @ 2, 2 GET oGet VAR cPassword OF oDlg PASSWORD ; VALID VALIDA_SENHA( oGet, cPassword ) @ 5, 5 BUTTON "&Continue" OF oDlg ; ACTION ( nTries++,; lGo := Upper( AllTrim( cPassword ) ) == "FIVEWIN",; If( nTries > 3 .or. lGo, oDlg:End(),; ( MsgAlert( "Wrong password!" ), oGet:SetFocus() ) ) ) ACTIVATE DIALOG oDlg CENTERED return lGo //----------------------------------------------------------------------------// FUNCTION VALIDA_SENHA( oGet, cPassword ) local cTec1 := "8" //inkey(0) local cTec2 := "7" //inkey(0) local cTec3 := "8" //inkey(0) local cTec4 := "9" //inkey(0) local lRet * //local cQual := "8789" //-> cPassword * local cQual := ALLTRIM( cPassword ) // ? CHR(cTec1) + CHR(cTec2) + CHR(cTec3) + CHR(cTec4), cQual if cTec1 + cTec2 + cTec3 + cTec4 != cQual ? "Hey Jumento a senha esta errada! ", "Verifique" /// kkkkkkkkkkkkkkk lRet := .F. else ? "Hay Inteligencia a senha esta Correta! ", "Parabens!!" lRet := .T. ENDIF RETURN( lRet ) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 22, 2014 Report Share Posted October 22, 2014 Melhorando para voce entender melhor de fivewin... // Small sample showing how to request a password previous to main window #include "FiveWin.ch" static oWnd //----------------------------------------------------------------------------// function Main() if lGetPassword() DEFINE WINDOW oWnd TITLE "Main" ACTIVATE WINDOW oWnd ; VALID MsgYesNo( "Want to end ?" ) endif return nil //----------------------------------------------------------------------------// function lGetPassword() local oDlg, oGet, oFont local cPassword := "8789" // := Space( 10 ) // Senha local nTries := 0 local lGo := .f. DEFINE FONT oFont NAME "Tahoma" SIZE 0, -12 DEFINE DIALOG oDlg ; FROM 5, 5 TO 20, 50 ; TITLE "Please Identify" ; FONT oFont @ 1, 2 SAY "Write FiveWin to go ahead..." OF oDlg @ 2, 2 GET oGet VAR cPassword OF oDlg PASSWORD ; VALID VALIDA_SENHA( oGet, cPassword ) @ 5, 5 BUTTON "&Continue" OF oDlg ; ACTION ( nTries++,; lGo := Upper( AllTrim( cPassword ) ) == "8789",; If( nTries > 3 .or. lGo, oDlg:End(),; ( MsgAlert( "Wrong password!" ), oGet:SetFocus() ) ) ) ACTIVATE DIALOG oDlg CENTERED return lGo //----------------------------------------------------------------------------// FUNCTION VALIDA_SENHA( oGet, cPassword ) local cTec1 := "8" //inkey(0) local cTec2 := "7" //inkey(0) local cTec3 := "8" //inkey(0) local cTec4 := "9" //inkey(0) local lRet * //local cQual := "8789" //-> cPassword * local cQual := ALLTRIM( cPassword ) // ? CHR(cTec1) + CHR(cTec2) + CHR(cTec3) + CHR(cTec4), cQual if cTec1 + cTec2 + cTec3 + cTec4 != cQual ? "Hey Jumento a senha esta errada! ", "Verifique" /// kkkkkkkkkkkkkkk cQual := space(4) oGet:VarPut( cQual ) oGet:Refresh() lRet := .F. else ? "Hay Inteligencia a senha esta Correta! ", "Parabens!!" lRet := .T. ENDIF RETURN( lRet ) Quote Link to comment Share on other sites More sharing options...
evertonlb Posted October 22, 2014 Author Report Share Posted October 22, 2014 Valeu cara... entendi. Mas mostrar um get e pedir a senha e verificar se a senha ta certa.. moleza.. não queria era mostrar o get... Ou será que não entendi teu código e o get não esta sendo mostrado e por isso eu sou, talvez, o tal jumento que se refere nas mensagens?!?! Tipo: do while ii < 5 O sistema fica parado esperando uma tecla ser digitada; sem ter um get na tela,; sem bip,; sem nenhuma coisa. cTec&ii. := tecla digitada ii ++ enddo * if cTec1 + cTec2 + cTec3 + cTec4 == strzero( day(date()) + Month(date()) + year(date() ), 4, 0 ) Msginfo( "Parabéns jumento, acertou a senha!" ) AbreMenu() else MsgInfo( "Ei seu inteligente... errou feio!" ) CaiForaChato() endif Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 22, 2014 Report Share Posted October 22, 2014 KKKKKKK, Não, o jumento, era somente uma brincadeira, para quebrar o gelo, não se ofenda, porfa! Fivewin é fácil para caramba, mas, é necessário estudar. Graças à Deus, temos este forum, que o Gilmer, aos trancos e barrancos, mantém a duras penas, já que o pessoal não compra as últimas versões do Five. Veja se agora voce entende: É apenas uma questão de aplicar a COR certa no GET e sem BORDA, que ele "some" // Small sample showing how to request a password previous to main window #include "FiveWin.ch" #Define COLOR_WINDOW 315 static oWnd, lLigaBtnSenha := .F. //----------------------------------------------------------------------------// function Main() if lGetPassword() DEFINE WINDOW oWnd TITLE "Main" ACTIVATE WINDOW oWnd ; VALID MsgYesNo( "Want to end ?" ) endif return nil //----------------------------------------------------------------------------// function lGetPassword() local oDlg, oGet, oFont local cPassword := Space( 4 ) // Senha invisivel e o get idem local nTries := 0 local lGo := .f. DEFINE FONT oFont NAME "Tahoma" SIZE 0, -12 // Veja se entende agora... Facil para kralyo... kkkkkkkkkkkkkkkk DEFINE DIALOG oDlg FROM 5, 5 TO 20, 50 ; TITLE "Digite a Senha Invisivel - Veja se Entende Agora" ; FONT oFont @ 1, 2 SAY "Digite a Senha Invisivel no Cursor Piscante: " OF oDlg Set( _SET_INSERT, ! Set( _SET_INSERT ) ) @ 3, 2 GET oGet VAR cPassword OF oDlg PASSWORD NO BORDER ; // Sem borda VALID VALIDA_SENHA( oGet, cPassword ) ; COLORS COLOR_WINDOW // aqui voce usa uma cor que "suma" com o GET. // COLOR_WINDOW Ou de sua preferencia. @ 5, 5 BUTTON "&Continue" OF oDlg ; ACTION ( nTries++,; lGo := Upper( AllTrim( cPassword ) ) == "8789",; If( nTries > 3 .or. lGo, oDlg:End(),; ( MsgAlert( "Wrong password!" ), oGet:SetFocus() ) ) ) @ 5, 15 BUTTON "&Saida" OF oDlg ; ACTION( oDlg:End() ) CANCEL UPDATE ACTIVATE DIALOG oDlg CENTERED Set( _SET_INSERT, ! Set( _SET_INSERT ) ) oFont:End() lLigaBtnSenha := .F. // necessitaria + 1 Get no dialogo. return lGo //----------------------------------------------------------------------------// FUNCTION VALIDA_SENHA( oGet, cPassword ) local cTec1 := "8" //inkey(0) local cTec2 := "7" //inkey(0) local cTec3 := "8" //inkey(0) local cTec4 := "9" //inkey(0) local lRet * //local cQual := "8789" //-> cPassword * local cQual := ALLTRIM( cPassword ) IF EMPTY( cPassword ) MsgStop( "Digite uma Senha Valida", "Senha Invalida" ) RETURN( .F. ) ENDIF // aqui, controle como achar melhor... if UPPER( CHR( cTec1 ) ) + UPPER( CHR( cTec2 ) ) + ; UPPER( CHR( cTec3 ) ) + UPPER( CHR( cTec4 ) ) != UPPER( cQual ) ? "Ooops a senha esta errada! ", "Verifique" /// kkkkkkkkkkkkkkk cQual := space(4) oGet:VarPut( cQual ) oGet:Refresh() lLigaBtnSenha := .F. lRet := .F. else ? "A senha esta Correta! ", "Parabens!!" lLigaBtnSenha := .T. lRet := .T. ENDIF RETURN( lRet ) // FIM DO PROGRAMA Quote Link to comment Share on other sites More sharing options...
evertonlb Posted October 23, 2014 Author Report Share Posted October 23, 2014 hahahaha.. não seja disfarçado rapaz!!! Esse negócio de jumento sei que foi só pra descontrair... faço muito disso tambem!!! hahahahah mas como moro em SC, aqui se usa muito o "tongo"... hahahahaha Cara, vou mudar um pouco a cabeça do cliente... é muita crise por causa de uma senha... mas isso me fez pensar.. Tem uma maneira de parar a execução do software? Tipo o inkey() do Clipper? Att. Everton Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 23, 2014 Report Share Posted October 23, 2014 Sim: SysWait( 0 ) Veja se é isso que queres. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 23, 2014 Report Share Posted October 23, 2014 Deixando mais invisivel ainda, caso alguem precise no futuro. // Small sample showing how to request a password previous to main window #include "FiveWin.ch" #Define COLOR_WINDOW 315 #Define CLR_DISABLE RGB( 255, 255, 217 ) static oWnd, lLigaBtnSenha := .F. //----------------------------------------------------------------------------// function Main() if lGetPassword() DEFINE WINDOW oWnd TITLE "Main" ACTIVATE WINDOW oWnd ; VALID MsgYesNo( "Want to end ?" ) endif return nil //----------------------------------------------------------------------------// function lGetPassword() local oDlg, oGet, oFont local cPassword := Space( 4 ) // Senha invisivel e o get idem local nTries := 0 local lGo := .f. // SetDlgGradient( { { 1, RGB( 199, 216, 237 ), RGB( 237, 242, 248 ) } } ) SetDlgGradient( { { 1, CLR_WHITE, RGB(255,251,225) } } ) DEFINE FONT oFont NAME "Tahoma" SIZE 0, -12 DEFINE DIALOG oDlg FROM 5, 5 TO 20, 50 ; TITLE "Digite a Senha Invisivel - Veja se Entende Agora" ; FONT oFont COLOR CLR_BLACK, CLR_WHITE TRANSPARENT @ 1, 2 SAY "Digite a Senha Invisivel no Cursor Piscante: " OF oDlg Set( _SET_INSERT, ! Set( _SET_INSERT ) ) @ 3, 2 GET oGet VAR cPassword OF oDlg PASSWORD NO BORDER ; // Sem borda VALID VALIDA_SENHA( oGet, cPassword ) FONT oFont ; COLORS CLR_DISABLE // aqui voce usa uma cor que "suma" com o GET. @ 5, 5 BUTTON "&Continue" OF oDlg ; ACTION ( nTries++,; lGo := Upper( AllTrim( cPassword ) ) == "8789",; If( nTries > 3 .or. lGo, oDlg:End(),; ( MsgAlert( "Wrong password!" ), oGet:SetFocus() ) ) ) @ 5, 15 BUTTON "&Saida" OF oDlg ; ACTION( oDlg:End() ) CANCEL UPDATE ACTIVATE DIALOG oDlg CENTERED Set( _SET_INSERT, ! Set( _SET_INSERT ) ) oFont:End() // lLigaBtnSenha := .F. // necessitaria + 1 Get no dialogo. return lGo //----------------------------------------------------------------------------// FUNCTION VALIDA_SENHA( oGet, cPassword ) local cTec1 := "8" //inkey(0) local cTec2 := "7" //inkey(0) local cTec3 := "8" //inkey(0) local cTec4 := "9" //inkey(0) local lRet * //local cQual := "8789" //-> cPassword * local cQual := ALLTRIM( cPassword ) IF EMPTY( cPassword ) MsgStop( "Digite uma Senha Valida", "Senha Invalida" ) RETURN( .F. ) ENDIF // aqui, controle como achar melhor... if UPPER( CHR( cTec1 ) ) + UPPER( CHR( cTec2 ) ) + ; UPPER( CHR( cTec3 ) ) + UPPER( CHR( cTec4 ) ) != UPPER( cQual ) MsgStop( "Ooops a senha esta errada! ", "Verifique" ) cQual := space(4) oGet:VarPut( cQual ) oGet:Refresh() //lLigaBtnSenha := .F. lRet := .F. else MsgInfo( "A senha esta Correta! ", "Parabens!!" ) //lLigaBtnSenha := .T. lRet := .T. ENDIF RETURN( lRet ) // FIM DO PROGRAMA Quote Link to comment Share on other sites More sharing options...
evertonlb Posted October 28, 2014 Author Report Share Posted October 28, 2014 Bom pessoal.. A minha tentativa era ter captar as teclas digitadas e trata-las para ver se coincidiam com a senha.. mas uma coisa absolutamente invisível.. sem get, sem beep, sem tremelique... no final das contas, apesar de todas as ajudar do Kapiaba, ainda assim não era beeemmmmm isso que eu esperava... então fiz uma coisa que deu absolutamente certo... usei a ideia do Kapiaba, criando uma Dialog, e dentro dela um get só que como trabalho com @, mandei criar esta DIALOG com valores negativos... tipo: Define DIALOG oForm_AcsRem TITLE "" style 2; FROM -180, -166 to -10, -35 PIXEL COLOR 0, 15790320 cara.. deu certinho... o DIALOG fica invisível porque fica numa região que não tem como aparecer... a partir disso trato o lance da senha normal... pois dentro deste DIALOG "invisível" tem um get.. e ai brother.. uso o nkey pra ver o que o cara digitou... ficou loco o baguio! kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 29, 2014 Report Share Posted October 29, 2014 Parabéns!! O importante é que no final deu certo. 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.