Thanks for your advice Regan, I also think it is the best solution and will apply.
My comment is for Roger to optimize "DC_GetListValidate" has no reason HIDE GET validate.
Regards
Miguel
How Can I cause Express to Validate Fields When I Click SAVE
Re: How Can I cause Express to Validate Fields When I Click
To validate not HIDE GETS just add in _dcgetbx.prg the following lines of code:
FUNCTION DC_GetValidate( oXbp, lPassBuffer, lTestForBlock, lExitValidate, lValidateOnChange )
LOCAL nPointer, aCargo := oXbp:cargo, nType, aGetlist, xValue, ;
mp1, mp2, oNextXbp, nEvent, lOk, bValidate, bProtect, cEditBuffer, ;
bDebugBlock := DC_GetValidateDebugBlock(), lValid := .F., lLocked
DEFAULT lPassBuffer := .f., ;
lTestForBlock := .f., ;
lExitValidate := .f., ;
lValidateOnChange := DC_GetValidateOnChange()
IF !Empty(bDebugBlock)
Eval(bDebugBlock,oXbp,1)
ENDIF
IF Valtype(aCargo) = 'A' .AND. Len(aCargo) >= 2 .AND. ;
Valtype(aCargo[1]) = 'N' .AND. Valtype(aCargo[2]) = 'A' .AND. ;
aCargo[1] > 0 .AND. aCargo[1] <= Len(aCargo[2])
aGetList := aCargo[2]
nPointer := aCargo[1]
nType := aGetlist[nPointer,nGETLIST_TYPE]
bValidate := nil
IF !( nType $ {GETLIST_GET,GETLIST_COMBOBOX,GETLIST_CHECKBOX,GETLIST_MLE,GETLIST_KLMLE} )
RETURN _ReturnFromValid( .T., oXbp, bDebugBlock )
ENDIF
// silex
bProtect := aGetList[nPointer,bGETLIST_HIDE]
if Valtype(aGetList[nPointer,bGETLIST_HIDE])='B' .AND. Eval(bProtect,oXbp)
// Don't validate a hide GET
// para que no valide los get ocultos
RETURN _ReturnFromValid( .T., oXbp, bDebugBlock )
endif
// fin de silex
FUNCTION DC_GetValidate( oXbp, lPassBuffer, lTestForBlock, lExitValidate, lValidateOnChange )
LOCAL nPointer, aCargo := oXbp:cargo, nType, aGetlist, xValue, ;
mp1, mp2, oNextXbp, nEvent, lOk, bValidate, bProtect, cEditBuffer, ;
bDebugBlock := DC_GetValidateDebugBlock(), lValid := .F., lLocked
DEFAULT lPassBuffer := .f., ;
lTestForBlock := .f., ;
lExitValidate := .f., ;
lValidateOnChange := DC_GetValidateOnChange()
IF !Empty(bDebugBlock)
Eval(bDebugBlock,oXbp,1)
ENDIF
IF Valtype(aCargo) = 'A' .AND. Len(aCargo) >= 2 .AND. ;
Valtype(aCargo[1]) = 'N' .AND. Valtype(aCargo[2]) = 'A' .AND. ;
aCargo[1] > 0 .AND. aCargo[1] <= Len(aCargo[2])
aGetList := aCargo[2]
nPointer := aCargo[1]
nType := aGetlist[nPointer,nGETLIST_TYPE]
bValidate := nil
IF !( nType $ {GETLIST_GET,GETLIST_COMBOBOX,GETLIST_CHECKBOX,GETLIST_MLE,GETLIST_KLMLE} )
RETURN _ReturnFromValid( .T., oXbp, bDebugBlock )
ENDIF
// silex
bProtect := aGetList[nPointer,bGETLIST_HIDE]
if Valtype(aGetList[nPointer,bGETLIST_HIDE])='B' .AND. Eval(bProtect,oXbp)
// Don't validate a hide GET
// para que no valide los get ocultos
RETURN _ReturnFromValid( .T., oXbp, bDebugBlock )
endif
// fin de silex
Re: How Can I cause Express to Validate Fields When I Click
Try this in your VALID statement:
Code: Select all
@ .. DCGET .. VALID {|oGet|IIF(oGet:isVisible(),MyValid(oGet),.t.)}
The eXpress train is coming - and it has more cars.