Code: Select all
#include 'Fivewin.ch'
function Main()
LOCAL oDlg
LOCAL oGet1, oGet2, oGet3, oBtn
LOCAL cVar1 := 'ABCDEF '
LOCAL cVar2 := SPACE( 8 )
LOCAL cVar3 := SPACE( 8 )
DEFINE DIALOG oDlg FROM 0, 0 TO 10, 30
@ 1, 1 GET oGet1 VAR cVar1 SIZE 30,12 PIXEL Valid ( MsgInfo('1'), .T. )
@ 40,50 BUTTON oBtn PROMPT '&Test' SIZE 30, 20 PIXEL
ACTIVATE DIALOG oDlg CENTER
return NIL
Sin embargo, si pulsamos en el botón y luego volvemos al get ya no ejecuta el valid.
Comprobando el código he visto que el método "FWLostFocus" de la clase control llama a lValid en el caso de que ::oWnd:lValidating sea nil o falso
Code: Select all
METHOD FWLostFocus( hCtlFocus ) CLASS TControl
local oWnd, oCtl
if ::oWnd:lValidating == nil .or. ! ::oWnd:lValidating // FW++ lValidating nil sometimes
::oWnd:lValidating = .t.
...
Code: Select all
METHOD Click() CLASS TButton
if ! ::lProcessing
::lProcessing = .t.
if ::bWhen != nil .and. ! Eval( ::bWhen )
::lProcessing = .f.
return nil
endif
::oWnd:lValidating = .T.
...