Aliás, fiz desta forma mais genérica. Observe que não é mais necessário passar o cCampo como argumento na função SetConfOFF:
Para HMG:#include <hmg.ch>
Function Main()
SET NAVIGATION EXTENDED
SET DATE TO BRITISH
SET CENTURY ON
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 400 HEIGHT 150 ;
TITLE 'Simulating SET CONFIRM OFF at TextBox' ;
MAIN
DEFINE LABEL Label_1
ROW 20
COL 30
WIDTH 160
VALUE 'Field 1 (Length 10):'
FONTBOLD .T.
END LABEL
DEFINE TEXTBOX Text_1
ROW 20
COL 160
WIDTH 180
MAXLENGTH 10
ON CHANGE {|| SetConfOFF(10,0) }
END TEXTBOX
DEFINE LABEL Label_2
ROW 48
COL 30
WIDTH 160
VALUE 'Field 2 (Length 10):'
FONTBOLD .T.
END LABEL
DEFINE TEXTBOX Text_2
ROW 48
COL 160
WIDTH 180
MAXLENGTH 10
DATE .T.
ON CHANGE {|| SetConfOFF(10,0) }
END TEXTBOX
DEFINE LABEL Label_3
ROW 76
COL 30
WIDTH 160
VALUE 'Field 3 (Length 14):'
FONTBOLD .T.
END LABEL
DEFINE TEXTBOX Text_3
ROW 76
COL 160
WIDTH 180
INPUTMASK "999.999.999-99"
ON CHANGE {|| SetConfOFF(0,Len("999.999.999-99")) }
END TEXTBOX
END WINDOW
Form_1.Center
Form_1.Activate
Return Nil
Function SetConfOFF( nMaxLength, nInputMask )
Local cFrmName := ThisWindow.Name
Local cCmpName := This.FocusedControl
If nInputMask > 0
nMaxLength := nInputMask
Endif
If !Empty(cCmpName)
If nMaxLength == GetProperty(cFrmName,cCmpName,"CaretPos")
InsertTab()
Endif
Endif
Return Nil
E para MiniGui Extended:#include "minigui.ch"
Function Main()
SET NAVIGATION EXTENDED
SET DATE TO BRITISH
SET CENTURY ON
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 400 HEIGHT 150 ;
TITLE 'Simulating SET CONFIRM OFF at TextBox' ;
MAIN
DEFINE LABEL Label_1
ROW 20
COL 30
WIDTH 160
VALUE 'Field 1 (Length 10):'
FONTBOLD .T.
END LABEL
DEFINE TEXTBOX Text_1
ROW 20
COL 160
WIDTH 180
MAXLENGTH 10
ON CHANGE {|| SetConfOFF() }
END TEXTBOX
DEFINE LABEL Label_2
ROW 48
COL 30
WIDTH 160
VALUE 'Field 2 (Length 10):'
FONTBOLD .T.
END LABEL
DEFINE TEXTBOX Text_2
ROW 48
COL 160
WIDTH 180
MAXLENGTH 10
DATE .T.
ON CHANGE {|| SetConfOFF() }
END TEXTBOX
DEFINE LABEL Label_3
ROW 76
COL 30
WIDTH 160
VALUE 'Field 3 (Length 14):'
FONTBOLD .T.
END LABEL
DEFINE TEXTBOX Text_3
ROW 76
COL 160
WIDTH 180
INPUTMASK "999.999.999-99"
ON CHANGE {|| SetConfOFF() }
END TEXTBOX
END WINDOW
Form_1.Center
Form_1.Activate
Return Nil
Function SetConfOFF()
Local cFrmName := ThisWindow.Name
Local cCmpName := This.FocusedControl
Local x := GetControlIndex(cCmpName, cFrmName)
Local nMaxLength := _HMG_aControlRangeMax[x]
Local nInputMask := Len(_HMG_aControlInputMask[x])
If nInputMask > 0
nMaxLength := nInputMask
Endif
If !Empty(cCmpName)
If nMaxLength == GetProperty(cFrmName,cCmpName,"CaretPos")
InsertTab()
Endif
Endif
Return Nil
Toledo, espero que não se importe de eu ter postado no
fórum oficial HMG adicionando a edição de sobre-escrito no TextBox. Agradeço desde já.