#include "fivewin.ch"
FUNCTION Main()
local oDlg, oBtn
local oCode, oFirst, oStreet, oCity
local nCode, cFirst, cStreet, cCity
USE TEST NEW
INDEX ON TEST->CODE TO TEST
nCode := 0
cFirst := Space(20)
cStreet := Space(30)
cCity := Space(30)
DEFINE DIALOG oDlg TITLE "Ejemplo Validación" FROM 1,1 TO 20,35
@2,1.5 GET oCode VAR nCode PICTURE "999" SPINNER ;
ON UP Actualiza( @nCode, oDlg, @cFirst, @cStreet, @cCity, -1 ) ;
ON DOWN Actualiza( @nCode, oDlg, @cFirst, @cStreet, @cCity, 1 ) ;
MIN 0 MAX 999 ;
VALID Actualiza( @nCode, oDlg, @cFirst, @cStreet, @cCity, 0 ) UPDATE
@3,1.5 GET oFirst VAR cFirst WHEN (nCode <> 0) UPDATE // no te olvides
@4,1.5 GET oStreet VAR cStreet WHEN (nCode <> 0) UPDATE // de los
@5,1.5 GET oCity VAR cCity WHEN (nCode <> 0) UPDATE // UPDATE's
@7, 8 BUTTON oBtn PROMPT "&Salir" ACTION oDlg:End() CANCEL
ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
/******/
STATIC FUNCTION Actualiza( nCode, oDlg, cFirst, cStreet, cCity, nMove )
local lOk := .F.
nCode += nMove // -1=Atras 1=adelante 0=valid
if dbSeek( nCode, .F. )
cFirst := TEST->FIRST
cStreet := TEST->STREET
cCity := TEST->CITY
lOK := .T.
else
MsgStop("Code Not Found")
nCode := 0
cFirst := Space(20)
cStreet := Space(30)
cCity := Space(30)
endif
oDlg:Update() // Aqui todo dialogo será revisto e atualizado
oDlg:aEvalWhen() // e reavaliado todos WHENs
RETURN lOk
VEJA: como limpar GET de uma só vez...
Moderador: Moderadores
