Hola fivewinners
Para una aplicacion debo saber si alguno de los controles cambio de su valor inicial, sea Get, checkbox, combobox.
Donde le puedo hechar una mirada, es para informar al usuario que no grabo las modificaciones hechas... ya sea con una alerta visual, mensajes, msgyesno(), aun no decido como, mi primer paso es averiguar que hay un control que cambio.
Cualquier consejo sera bienvenido.
Gracias de antemano.
Desde Chile
Adolfo
Como saber si un control cambio.. updated()
Como saber si un control cambio.. updated()

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Como saber si un control cambio.. updated()
Adolfo,
Declaramos un array en donde se guardarán los valores iniciales:
local aInitValues := {}
y antes de llamar a ACTIVATE DIALOG, hacemos:
AEval( oDlg:aControls, { | oCtrl | AAdd( aInitValues, If( oCtrl:bSetGet != nil, Eval( oCtrl:bSetGet ), nil ) ) } )
Para comprobar si han habido cambios hacemos:
AEval( oDlg:aControls, { | oCtrl, n | If( oCtrl:bSetGet != nil .and. Eval( oCtrl:bSetGet ) != aInitValues[ n ], MsgInfo( "cambio" ),) } )
Declaramos un array en donde se guardarán los valores iniciales:
local aInitValues := {}
y antes de llamar a ACTIVATE DIALOG, hacemos:
AEval( oDlg:aControls, { | oCtrl | AAdd( aInitValues, If( oCtrl:bSetGet != nil, Eval( oCtrl:bSetGet ), nil ) ) } )
Para comprobar si han habido cambios hacemos:
AEval( oDlg:aControls, { | oCtrl, n | If( oCtrl:bSetGet != nil .and. Eval( oCtrl:bSetGet ) != aInitValues[ n ], MsgInfo( "cambio" ),) } )
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Como saber si un control cambio.. updated()
Usando AScan() buscamos el primer control que sea distinto:
AScan( oDlg:aControls, { | oCtrl, n | oCtrl:bSetGet != nil .and. Eval( oCtrl:bSetGet ) != aInitValues[ n ] } ) != 0
un valor .T. significa que han habido cambios
AScan( oDlg:aControls, { | oCtrl, n | oCtrl:bSetGet != nil .and. Eval( oCtrl:bSetGet ) != aInitValues[ n ] } ) != 0
un valor .T. significa que han habido cambios
Re: Como saber si un control cambio.. updated()
Gracias Master...
Probamos y comento como me fue..
Saludos desde Chile
Adolfo
Probamos y comento como me fue..
Saludos desde Chile
Adolfo

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Re: Como saber si un control cambio.. updated()
Antonio...
En las pruebas que realice, funciono sin problemas..
Me falta probar en dialogos con folder.
Mi pregunta ahora es, podrá ponerse una DATA en la Clase tDialog, que asuma el valor de si cambio o no algún control, como para ser automático
...algo así como 'lChanged'
Saludos y gracias nuevamente
En las pruebas que realice, funciono sin problemas..
Me falta probar en dialogos con folder.
Mi pregunta ahora es, podrá ponerse una DATA en la Clase tDialog, que asuma el valor de si cambio o no algún control, como para ser automático
...algo así como 'lChanged'
Saludos y gracias nuevamente

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650