Página 1 de 1
Digitar número da direita para esquerda
Enviado: 04 Out 2019 09:03
por asimoes
Pessoal,
Existem algum código exemplo para um campo edit de valor que a digitação seja da direita para esquerda, como existe no clipper?
Digitar número da direita para esquerda
Enviado: 04 Out 2019 09:28
por asimoes
hazael escreveu: Não seria isso que está procurando?
Colega seria usando o edit da
hwgui , que não usa o getsys
Digitar número da direita para esquerda
Enviado: 06 Out 2019 11:40
por asimoes
Digitar número da direita para esquerda
Enviado: 06 Out 2019 11:48
por asimoes
O código do meu teste:
Código: Selecionar todos
#Include "hwgui .ch"
THREAD STATIC Thisform
FUNCTION MAIN()
LOCAL oDlg, oEdit1, oButtonex1
LOCAL nValor := ""
INIT DIALOG oDlg ;
TITLE "Form1" ;
AT 0, 0 ;
SIZE 250,117 ;
NOEXIT ;
STYLE WS_POPUP + WS_CAPTION + WS_SYSMENU + DS_CENTER
Thisform := oDlg
@ 012,29 GET oEdit1 ;
VAR nValor ;
SIZE 150,24 ;
STYLE ES_RIGHT ;
MAXLENGTH 12 ;
ON CHANGE {|| oEdit1_onChange() }
@ 132,71 BUTTONEX oButtonex1 ;
CAPTION "Sair" ;
SIZE 98,32 ;
STYLE BS_CENTER + WS_TABSTOP ;
ON CLICK {|| Thisform:Close() }
ACTIVATE DIALOG oDlg
RETURN oDlg:lresult
STATIC FUNCTION oEdit1_onChange()
LOCAL cValor
Thisform:oEdit1:lNumInvert := .T.
cValor := alltrim(Thisform:oEdit1:VarGet())
cValor := AllTrim(StrTran( cValor, "."))
Thisform:oEdit1:VarPut( Hb_NtoS( Val(cValor) / 100 ) )
Thisform:oEdit1:Refresh()
hwg_Keyb_Event(VK_END)
RETURN .T.
Digitar número da direita para esquerda
Enviado: 06 Out 2019 11:57
por asimoes
Na classe HEdit
Adicionei
DATA lNumInvert INIT .F.
No método Refresh()
Código: Selecionar todos
METHOD Refresh() CLASS HEdit
LOCAL vari
IF ::bSetGet != Nil
vari := Eval( ::bSetGet, , Self )
IF ! Empty( ::cPicFunc ) .OR. ! Empty( ::cPicMask )
vari := iif( vari = Nil, "", Vari )
vari := Transform( vari, ::cPicFunc + iif( Empty( ::cPicFunc ), "", " " ) + ::cPicMask )
ELSE
IF ! ::lNumInvert
vari := iif( ::cType == "D", Dtoc( vari ), iif( ::cType == "N", Str( vari ), ;
iif( ::cType == "C" .AND. ValType( vari ) == "C", Trim( vari ), "" ) ) )
ENDIF
ENDIF
::Title := vari
ENDIF
hwg_Setdlgitemtext( ::oParent:handle, ::id, ::title )
IF hwg_Iswindowvisible( ::handle ) .AND. !Empty( hwg_GetWindowParent( ::handle ) ) //hwg_Ptrtoulong( hwg_Getfocus() ) == hwg_Ptrtoulong( ::handle )
hwg_Redrawwindow( ::Handle, RDW_NOERASE + RDW_INVALIDATE + RDW_FRAME + RDW_UPDATENOW ) //+ RDW_NOCHILDREN )
ENDIF
RETURN Nil
Não utilizei máscara pro número, só ponto decimal que já é da conversão da Hb_NtoS
Obs.: Isso é uma modificação na versão 2.17, então se quiser usar isso tem que falar pro Kressin implementar na versão atual.
Digitar número da direita para esquerda
Enviado: 06 Out 2019 14:50
por asimoes
Usando a função PicVal() do J Quintas
Código: Selecionar todos
STATIC FUNCTION oEdit1_onChange()
LOCAL cValor
Thisform:oEdit1:lNumInvert := .T.
cValor := alltrim(Thisform:oEdit1:VarGet())
cValor := AllTrim(StrTran( cValor, "."))
cValor := AllTrim(StrTran( cValor, ","))
Thisform:oEdit1:VarPut( AllTrim( Transform( Val(cValor) / 100, PicVal( Len(cValor), 2 ) ) ) )
Thisform:oEdit1:Refresh()
hwg_Keyb_Event(VK_END)
RETURN .T.
FUNCTION PicVal( nLen, nDec )
LOCAL cPicture
nDec := iif( nDec == NIL, 0, nDec )
cPicture := "999,999,999,999,999,999"
cPicture := Transform( val( Replicate( "9", nLen - nDec ) ), cPicture )
IF nDec > 0
cPicture := cPicture + "." + Replicate( "9", nDec )
ENDIF
RETURN cPicture
Digitar número da direita para esquerda
Enviado: 06 Out 2019 15:15
por asimoes
Usando @E virgula para casa decimal
Código: Selecionar todos
STATIC FUNCTION oEdit1_onChange()
LOCAL cValor
Thisform:oEdit1:lNumInvert := .T.
cValor := alltrim(Thisform:oEdit1:VarGet())
cValor := AllTrim(StrTran( cValor, "."))
cValor := AllTrim(StrTran( cValor, ","))
cValor := AllTrim( Transform( Val( cValor ) / 100, "@E" + PicVal( Len( cValor ), 2 ) ) )
ThisForm:oStatus1:SetText( cValor )
Thisform:oEdit1:VarPut( cValor )
Thisform:oEdit1:Refresh()
hwg_Keyb_Event(VK_END)
RETURN .T.
Re: Digitar número da direita para esquerda
Enviado: 10 Fev 2026 00:32
por deividdjs
fiz uma modificação na versao 2.23 b8 .. e criei um estilo ..
Código: Selecionar todos
@ 18, 51 SAY "Limite de Credito" TRANSPARENT SIZE 140, 21 OF oPage ;
FONT oFontSmall
@ 18, 70 GET oGetLimCred VAR n_limcred ;
PICTURE MASK1() ;
SIZE 160, 24 OF oPage ;
STYLE ES_RIGHT + ES_NUMINVERT + ES_CLEARTYPE
ES_NUMINVERT --> SIMPLISMENTE COMEÇA A DIGITACAO DA DIREITA PRA ESQUERDA E MANTEM O CONTEUDO DO GET E VC VOLTAR NELE
ES_CLEARTYPE --> LIMPA O CONTEUDO DO GET AO RE-DIGITAR ..
FICOU BEM LEGAL ..
SEGUE A VERSAO DO
HWGUI SE ALGUEM TIVER INTERESSE DE TESTAR ..
ABRAÇO !
Re: Digitar número da direita para esquerda
Enviado: 10 Fev 2026 09:53
por Itamar M. Lins Jr.
Olá!
Provavelmente, será implementdo.
Agora estou sem tempo e meu CPU Linux ainda estou vendo se o rapaz libera, tá enrolando.
Re: Digitar número da direita para esquerda
Enviado: 10 Fev 2026 12:05
por deividdjs
Legal Itamar .. vou mexer na gtk tbm e envio aqui nas modificacoes ja funcionando ..
Abs