Dúvida sobre entrada de senha

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Dúvida sobre entrada de senha

Mensagem por Pablo César »

Olá Toledo,

Consegui fazer que funcione a sua opção de digitar o caracter de espaços e corrigi sobre o BackSpace.

Veja como ficaria:

Código: Selecionar todos

Function Espaco_Press()
cCmpValue := GetProperty( cFrmName, cCmpName, "Value" )
nCmpPos  := GetProperty( cFrmName, cCmpName, "CaretPos" )
cCmpValue += Space(1)
SetProperty( cFrmName, cCmpName, "Value", cCmpValue )
SetWindowText ( GetControlhandle(cCmpName,cFrmName), cCmpValue )
SetProperty( cFrmName, cCmpName, "CaretPos", nCmpPos+1 )
Return .T.

Function Back_Press()
cCmpValue := GetProperty( cFrmName, cCmpName, "Value" )
nCmpPos  := GetProperty( cFrmName, cCmpName, "CaretPos" )
cCmpValue := Stuff(cCmpValue,nCmpPos,1,"")
SetProperty( cFrmName, cCmpName, "Value", cCmpValue )
SetProperty( cFrmName, cCmpName, "CaretPos", If(nCmpPos>0,nCmpPos-1,0))
Return .T.
Ahhh econtrei os seguintes bugs no meu código:
- BackSpace está sendo colocado no lugar certo, mesmo no meio do texto
- Aceita Enter para confirmação de senha
- Não para no CheckBox a pressionar TAB
- Reposicionamento da primeira coluna para visualizar o destaque por completo
- Aceita ESC como caminho de saída em todas as janelas

Portanto vou pedir mais uma vez atualizar o arquivo na seção de Downloads, por favor e obrigado pela atenção (ante como moderador tornava-se mais fácil pra mim rs).
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Dúvida sobre entrada de senha

Mensagem por Toledo »

Pablo César escreveu:Consegui fazer que funcione a sua opção de digitar o caracter de espaços e corrigi sobre o BackSpace.
Eu já tinha corrigido estes probleminhas! E o seu código para a barra de espaço está mais enxuto.

O seu arquivo foi atualizado.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Dúvida sobre entrada de senha

Mensagem por Pablo César »

Obrigado Toledo pela atualização na seção de Downloads.

Ficou muito bom o seu exemplo, parabéns !
Toledo escreveu: E o seu código para a barra de espaço está mais enxuto.
Não fiz opção de ESPAÇO, mas nada que não possa ser implementado. Talvez mais uma fileira e aproveitaria colocar os botões SHIFT e BACKSPACE.

Outra sugestão: poderia colocar também a opção de voltar ao primeiro campo após ENTER para que possa navegar entre os campos no form anterior.

Programar com Minigui ou HMG é muito compensador...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

Dúvida sobre entrada de senha

Mensagem por luiz antonio da silva »

Bom dia !

O assunto tá rendendo...rs, fiquei pensando nas possibilidades de mudanças, uma que me ocorreu foi a de vários caracteres em um unico botão (tipo web de banco), segue código exemplo:

Código: Selecionar todos

#include <hmg.ch>

Function Main
public tabela,CAPTURA:={}, SENHA:='789123', SENHA_OK:='111111'
nrow:=20
ncol:=-40
wid:=55
hei:=30

tabela:={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'}

DADOS:={}
num:=rt:=ok:=0
vr:=""
while .t.
num:=hb_randomint(1,len(tabela))
if num<1 .or. num>len(tabela); loop; endif

OK:=0
FOR N=1 TO LEN(DADOS)
    IF AT(TABELA[NUM], DADOS[N])<>0
		OK:=1
		N:=LEN(DADOS)
	ENDIF
NEXT N
	
if ok=0
	if at(tabela[num],vr)<>0; ok:=1; endif
endif

if ok=0
	vr+=tabela[num]
	if len(vr)=3
		xv:=subst(vr,1,1)+"-"+subst(vr,2,1)+"-"+subst(vr,3,1)
		aadd(dados, xv)
		vr:=""
		rt+=1
	endif
endif

if rt=(len(tabela)/3); exit; endif
enddo
aadd(dados, 'OK')

DEFINE WINDOW Tcv AT 306 , 853 WIDTH 850 HEIGHT 350 title "teclado (senha: 789123)" on init monta() main

for a=1 to len(dados)
   lb:='tecla'+strzero(a,3)
   lba:="'"+lb+"'"
   ncol:=ncol+60
   if ncol>780
      nrow:=nrow+35
      ncol:=20
   endif
   obj:=dados[a]
   
   @ 20,20 button &lb caption "" width 23 height 23 action tecla(&lba) 

   setproperty('tcv',lb,'row',nrow)
   setproperty('tcv',lb,'col',ncol)
   setproperty('tcv',lb,'caption',obj)
   setproperty('tcv',lb,'width',wid)
   setproperty('tcv',lb,'height',hei)
   setproperty('tcv',lb,'fontbold',.t.)
next a


END WINDOW
activate window tcv


Return

func monta()

retu 

func tecla(x)
tcl:=getproperty('tcv',x,'CAPTION')
IF TCL<>'OK'
	AADD(CAPTURA, TCL)
	RETU
ENDIF	

IF LEN(CAPTURA)<>LEN(SENHA)
    MSGINFO("SENHA INVALIDA !")
	CAPTURA:={}
	RETU
ENDIF
	
OK_SENHA:=""
FOR N=1 TO LEN(SENHA)
    IF AT(SUBST(SENHA,N,1), CAPTURA[N])<>0
		OK_SENHA+='1'
	ELSE
		OK_SENHA+="0"
	ENDIF
NEXT N

IF OK_SENHA=SENHA_OK
	MSGINFO("SENHA VALIDA !")
	CAPTURA:={}
ELSE
	MSGINFO("SENHA INVALIDA !")
	CAPTURA:={}
ENDIF
retu 
* Não me preocupei com o tamanho do código, ficou assim para que sua leitura seja simples.

abraço.
Luiz.
HMG 3.4.4 - SQL SERVER - ORACLE
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Dúvida sobre entrada de senha

Mensagem por Pablo César »

luiz antonio da silva escreveu:fiquei pensando nas possibilidades de mudanças, uma que me ocorreu foi a de vários caracteres em um unico botão
Então... foi o que eu arranjei com o botão SHIFT para obter duplo valor da mesma tecla, alternando-a...
Agora acabei de adicionar a tecla ESPAÇO, TAB e SHIFT-TAB para poder navegar entre os campos e vou fazê-lo com que navegue somente entre campos do tipo TEXT.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Dúvida sobre entrada de senha

Mensagem por Pablo César »

Motivado a melhorar o meu exemplo baseado nos recursos do exemplo do Toledo ao qual agradecemos imensamente a sua contribuição, eis as melhoras que fiz nesta versão:

- Adicionado novas teclas: Espaço, Tab, Shift-Tab
- Fiz uma nova opção de teste de formulário, apenas para navegar de campos de texto com o teclado
- Nova opção de CONFIG no menu principal para configurar se deseja com som, forçar VK e destacar ao clicar no VK
- Pode também alterar tais configurações na Barra de Status
- Foi adicionado exceções de teclas no VK. Você pode definir qual tecla estará habilitada
- Otimizado o posicionamento do VK dentro da área do desktop
- VK numérico comutável e auto reconhece TEXTBOX numéricos
- Opção de navegando entre campos do tipo TEXTO
- Código fonte otimizado
Screen1.PNG
Espero que gostem ! (A nova versão estará disponível na seção de Downloads)
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Dúvida sobre entrada de senha

Mensagem por Claudio Soto »

Funciones para manejar el teclado virtual del sistema (On Screen Keyboard) desde HMG: http://www.hmgforum.com/viewtopic.php?p=35243#p35243
Espero que les sea útil.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Dúvida sobre entrada de senha

Mensagem por lugab »

Bacana, rotina ótima pra quem quer aprender minigui...

Toledo, como é que eu compilo essa sua rotina ?

Grato
lugab
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Dúvida sobre entrada de senha

Mensagem por Toledo »

Amigo, se você usa a MiniGui Extended, entre na pasta onde está o DEMO.PRG e digite:

\minigui\batch\compile demo

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Dúvida sobre entrada de senha

Mensagem por lugab »

Obrigado, Toledo...

(Ps: Deixei uma solicitação em msg privada pra vc e aguardo sua resposta)

Um abraço
lugab
Responder