Redefine Get oGt[4];
Var cStr[5] ;
Update;
ID 108;
Picture "999,999.99" ;
of oDlg
Procedure TrocaMascara()
cMascara := "999,999.999"
oGt[4]:cPicture := cMascara
oGt[4]:oGet:Picture := cMascara
oGt[4]:Refresh()
Return
Com essa procedure a máscara é modificada, mas apenas se eu pressionar "." ( ponto ) antes do primeiro decimal ser adicionado
Exemplo das teclas pressionadas
123.456 = OK => 123.456
12345.678 = OK => 12,345.678
123456.789 = OK => 123,456.789
123456789 = Falha => 123,456.780
1234567.89 = Falha => 123,456.790
12345678.9 = Falha => 123,456.790
Na classe TGet achei no método KeyChar esse trecho, que aparentemente é o responsável por esse funcionamento mas não consegui implementar
if ::oGet:Type == "N" .and. ( Chr( nKey ) == "." .or. Chr( nKey ) == "," )
if ::oGet:Clear()
#ifndef __XHARBOUR__
::oGet:DelEnd()
#endif
endif
::oGet:ToDecPos()