Exemplo:
nVlrUti:=APS01->VL_Uti1
nVlrUti:=GetGui("Valor UTI","Entre com o valor da UTI:",nVlrUti,"@E 999.99",'xValor > 0','Deve ser informado um valor válido.')
IF Empty(nVlrUti) .OR. APS01->VL_Uti1 = nVlrUti
RETURN Nil
ENDIF
FUNCTION GetGui( cTitle, cText, xValue, cPicture, cValid,cMensValid)
LOCAL oModDlg, oFont:=HFont():Add( "MS Sans Serif", 0, - 13 )
LOCAL oIconInput :=HIcon():AddResource("ICON_INPUT32")
LOCAL oIconOk :=HIcon():AddResource("ICON_OK16")
LOCAL oIconCancela:=HIcon():AddResource("ICON_SAIR16")
LOCAL lSairSemOk:=.F.
PRIVATE xValor:=xValue, xOldValue:=xValue, oGet, lValida:=.F.
HB_Default(@cValid,'.T.')
HB_Default(@cMensValid,'')
DO WHILE .T.
INIT DIALOG oModDlg TITLE cTitle AT 0, 0 SIZE 300, 110 ;
ICON oIconInput ;
FONT oFont ;
CLIPPER NOEXIT;
STYLE DS_CENTER+ WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU
@ 20, 10 SAY cText SIZE 260, 22
@ 20, 35 GET oGet VAR xValue SIZE 260, 26 ;
STYLE WS_TABSTOP + ES_AUTOHSCROLL + WS_DLGFRAME ;
COLOR hwg_RGB(0,0,255) BACKCOLOR 16777172 ;
VALID {||xValor:=xValue}
oModDlg:aControls[ 2 ]:Anchor := ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS
oGet:ParsePict( cPicture, xValue )
x1:=Int( oModDlg:nWidth / 2 ) - 90
@ x1, 75 BUTTONEX "Ok" ID IDOK SIZE 80, 20 ICON oIconOk:handle ;
ON CLICK {||IF(!ValidaX(cValid,cMensValid),oGet:SetFocus(),HWG_EndDialog())} ;
TOOLTIP ''
oModDlg:aControls[ 3 ]:Anchor := ANCHOR_BOTTOMABS
@ x1 + 100,75 BUTTONEX "Cancelar" ID IDCANCEL SIZE 80, 20 ;
ICON oIconCancela:handle ;
ON CLICK {||lSairSemOk:=.T.,HWG_EndDialog()} ;
TOOLTIP "Clique aqui para cancelar."
oModDlg:aControls[ 4 ]:Anchor := ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS
ACTIVATE DIALOG oModDlg ON ACTIVATE { || IIF( ! Empty( xValue ), hwg_KEYB_EVENT( VK_END ), .T. ) }
oFont:Release()
IF !lValida
xValue:=xOldValue
ENDIF
RELEASE xValor, xOldValue, oGet, lValida
EXIT
ENDDO
RETURN xValue
FUNCTION ValidaX(cValid,cMensValid)
lValida:=&cValid.
IF !lValida
hwg_MsgStop(cMensValid,"Atenção")
oGet:VarPut(xOldValue)
oGet:Refresh()
hwg_Keyb_Event( VK_END )
ENDIF
RETURN lValida