Clipper On Line • Ver Tópico - Campo Senha

Campo Senha

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Campo Senha

Mensagempor clodoaldomonteiro » 22 Ago 2018 09:45

Fiz alterações na função do Quintas para que o BackSpace venha e diminuir o tamanho da senha no monitor, e também que se possa passar a senha anterior:
FUNCTION GetSecret( cSenha, nRow, nCol, nLen )

   LOCAL cText, nKey, cSetColor

   DEFAULT nLen To 20

   cSetColor := SetColor("7/0,/0")
   @ nRow, nCol SAY Replicate( " ", nLen ) //COLOR SetColorFocus()
   @ nRow, nCol SAY Replicate( "*", Len(Alltrim(cSenha)) ) //COLOR SetColorFocus()
   cText := cSenha
   DO WHILE .T.
      @ nRow, nCol + Len( cText ) SAY ""
      nKey := Inkey( 600, INKEY_ALL - INKEY_MOVE + 1024) //HB_INKEY_GTEVENT )
      DO CASE
      CASE nKey == 0
         QUIT // KEYBOARD Chr( K_ESC ) + "S"
      CASE nKey == K_RBUTTONDOWN
         KEYBOARD Chr( K_ESC )
      CASE nKey < 1 .OR. nKey > 126
         LOOP
      CASE nKey == K_ENTER
         cText := Pad( cText, 20 )
         EXIT
      CASE nKey = K_ESC
         EXIT
      CASE nKey == K_BS .OR. nKey == K_LEFT
         IF Len( cText ) > 0
            cText := Substr( cText, 1, Len( cText ) - 1 )
            @ nRow, nCol SAY Replicate( " ", nLen )
            @ nRow, nCol SAY Replicate( "*", Len(Alltrim(cText)) )
         ENDIF
      CASE Len( cText ) == nLen
      OTHERWISE
         cText += Upper( Chr( nKey ) )
         @ nRow, nCol SAY Replicate( "*", Len(Alltrim(cText)) )
      ENDCASE
   ENDDO
   SetColor( cSetColor )

   RETURN cText
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 751
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 114 vezes
Mens.Curtidas: 31 vezes

Campo Senha

Mensagempor clodoaldomonteiro » 22 Ago 2018 09:47

Vou testar essa também Jânio.
Muito obrigado.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 751
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 114 vezes
Mens.Curtidas: 31 vezes

Campo Senha

Mensagempor clodoaldomonteiro » 27 Ago 2018 10:08

Parabéns Hazael, são muito boas as suas modificações.
Vou começar a modificar meu GetSys hj mesmo.
Muito obrigado.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 751
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 114 vezes
Mens.Curtidas: 31 vezes

Campo Senha

Mensagempor alxsts » 01 Set 2018 03:03

Olá!

Este código postado pelo Clodoaldo e pelo Jânio tem origem no código que posto abaixo, completo, incluído o arquivo de cabeçalho. O mesmo foi publicado no livro do Rick Spence faz muito tempo. Não precisa alterar GetSys. Pode manter como função independente. O campo password pode estar entre os demais gets, sem problema.
/***
* Getpass.prg
*
* Password GET - echoing asterisks
*/

#include "Getexit.ch"
#include "Inkey.ch"

//#include "Getpass.ch"

/***
* Getpass.ch
*
* Definition of GET PASSWORD command.
*/

#command @ <row>, <col> GET <var>                                ;
                        [<clauses,...>]                          ;
                        PASSWORD                                 ;
                        [<moreClauses,...>]                      ;
                                                                 ;
      => @ <row>, <col> GET <var>                                ;
                        [<clauses>]                              ;
                        SEND reader := {|oGet|                   ;
                                        GetPassword(oGet) }      ;
                        [<moreClauses>]

FUNCTION Getpass

LOCAL cVar1 := Space(10), ;
      cVar2 := Space(15), ;
      cVar3 := Space(12)

LOCAL GetList := {}

  CLEAR SCREEN
  @ 10, 10 SAY "Usuário    " GET cVar1         
  @ 11, 10 SAY "Senha      " GET cVar2 PASSWORD
  @ 12, 10 SAY "Empresa    " GET cVar3
  READ

RETURN NIL
//------------------------------------------------------------------------------

proc GetPassword( oGet )

LOCAL nKey,              ;
      nChar,             ;
      cKey

  // read the GET if the WHEN condition is satisfied
  IF ( GetPreValidate(oGet) )
    // activate the GET for reading
    oGet:SetFocus()

    oGet:cargo := ""
    DO WHILE ( oGet:exitState == GE_NOEXIT )
      // check for initial typeout (no editable positions)
      IF ( oGet:typeOut )
        oGet:exitState := GE_ENTER
      ENDIF

      // apply keystrokes until exit
      DO WHILE ( oGet:exitState == GE_NOEXIT )
        nKey := InKey(0)
        IF nKey >= 32 .AND. nKey <= 255
          oGet:cargo += Chr(nKey)
          GetApplyKey(oGet, Asc("*"))
          ELSEIF nKey == K_BS
          oGet:cargo := Substr(oGet:cargo, 1, Len(oGet:cargo) - 1)
          GetapplyKey(oGet, nKey)
        ELSEIF nKey == K_ENTER
          GetApplyKey(oGet, nKey)
        ENDIF
      ENDDO

      // disallow exit if the VALID condition is not satisfied
      IF ( !GetPostValidate(oGet) )
        oGet:exitState := GE_NOEXIT
      ENDIF
    ENDDO
    // de-activate the GET
    oGet:KillFocus()
  ENDIF
  IF oGet:exitState != GE_ESCAPE
    oGet:varPut(oGet:cargo)
  ENDIF

RETURN
//------------------------------------------------------------------------------

senhapasswordsecret
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Anterior



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro