Bom dia!
Gostaria de saber dos caros colegas do grupo se é possÃvel criar um teclado virtual para entrada de senha na aplicação que desenvolvemos como os bancos fazem. Seria possÃvel isto no Minigui ou HMG?
[]'s
Paulo - JacareÃ/SP

Moderador: Moderadores
#include <hmg.ch>
Function Main
public tabela
tabela:={'!','@','#','$','%','¨','&','*','(',')','_','+','Q','W','R','T','Y','U','I','O','P','´','[','A','S','D','F','G','H','J','K','L','Ç','~',']','\','Z','X','C','B','N','M',',','.','.',';','/'}
DEFINE WINDOW Tcv AT 306 , 853 WIDTH 742 HEIGHT 350 title "teclado" on init monta() main
END WINDOW
activate window tcv
Return
func monta()
nrow:=20
ncol:=-4
wid:=23
hei:=23
for a=1 to 47
lb:='tecla'+strzero(a,3)
lba:="'"+lb+"'"
ncol:=ncol+24
if ncol>284
nrow:=nrow+24
ncol:=20
endif
obj:=tabela[a]
@ 20,20 label &lb value '1' width 23 height 23 centeralign action tecla(&lba) of tcv
setproperty('tcv',lb,'row',nrow)
setproperty('tcv',lb,'col',ncol)
setproperty('tcv',lb,'value',obj)
setproperty('tcv',lb,'width',wid)
setproperty('tcv',lb,'height',hei)
setproperty('tcv',lb,'backcolor',{192,192,192})
setproperty('tcv',lb,'fontbold',.t.)
next a
retu
func tecla(x)
tcl:=getproperty('tcv',x,'value')
msginfo(tcl)
retu
de
Local aTable:={'!','@','#','$','%','¨','&','*','(',')','_','+','Q','W','E','R','T','Y','U','I','O','P','´','[','A','S','D','F','G','H','J','K','L','Ç','~',']','\','Z','X','C','V','B','N','M',',','.',';','/'}
para
Local aTable:={'0','1','2','3','4','5','6','7','8','9','!','@','#','$','%','¨','&','*','(',')','_','+','Q','W','E','R','T','Y','U','I','O','P','´','[','A','S','D','F','G','H','J','K','L','Ç','~',']','\','Z','X','C','V','B','N','M',',','.',';','/'}
de
DEFINE WINDOW ATV AT yPos+80,xPos+nWidth-34 WIDTH 300 HEIGHT 130 title "" ;
para
DEFINE WINDOW ATV AT yPos+80,xPos+nWidth-34 WIDTH 300 HEIGHT 154 title "" ;
de
For a=1 to 48
para
For a=1 to len(aTable)
Function ShowKeyboard()
Local a, obj
Local nrow:=26
Local ncol:=-18
Local wid:=23
Local hei:=23
//Local aTable:={'0','1','2','3','4','5','6','7','8','9','!','@','#','$','%','¨','&','*','(',')','_','+','Q','W','E','R','T','Y','U','I','O','P','´','[','A','S','D','F','G','H','J','K','L','Ç','~',']','\','Z','X','C','V','B','N','M',',','.',';','/'}
Local fTable:={'0','1','2','3','4','5','6','7','8','9','!','@','#','$','%','¨','&','*','(',')','_','+','Q','W','E','R','T','Y','U','I','O','P','´','[','A','S','D','F','G','H','J','K','L','Ç','~',']','\','Z','X','C','V','B','N','M',',','.',';','/'}
Local xPos := Login.Col
Local yPos := Login.Row
Local nWidth := Login.Width
Local aTable:={}
rt:=0
while .t.
num:=hb_randomint(1,len(ftable))
if num<1 .or. num>len(ftable); loop; endif
ret:=ascan(aTable, ftable[num])
if ret=0
aadd(aTable, ftable[num])
rt++
endif
if rt=len(ftable); exit; endif
enddo
Pablo César escreveu:Daria para fazer com que a janela pudesse ser movida com o mouse.
Pablo César escreveu:Verifique a sua função Back_Press que deveria eliminar o caracter onde o cursor estiver posicionado e não eliminar o restante. Para isso eu utilizei o Stuff com opção delete e insert.
Outra coisa, veja que o caracter "" (E comercial ou ampersand em inglês) não aparece nos botões nem nos labels. Para isso pode utilizar o "" duplo macro, mas terá que tratar para não inserir dois caracteres.
Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes