He buscado esto y es muy general, por lo que me disculpan si ya se ha discutido antes.
Tengo un XBROWSE que actualizara una serie de SAY, lo primero que pense es usar ON CHANGE, pero no lo hace como yo espero a cambiar de una linea del xBrowse a otra.
El Codigo que uso es el siguiente:
Code: Select all
FUNCTION Contactos()
DEFINE DIALOG oDCuenta RESOURCE DLG_CC_CAT TITLE cTitulo ;
COLOR 0, CLR_WHITE TRANSPARENT
REDEFINE XBROWSE oBrowse ; && Define la lista XBrowse
ID 211 ALIAS "CC_CONTAC" ;
COLUMNS "DETALLE", "CARGO" ;
HEADERS "Contacto", "Cargo" ;
COLSIZES 230, 170 ;
ON CHANGE ActualizaContacto( @cContact_Deta, @cContact_Cargo, @cContact_Direc, @cContact_Email, @cContact_Tel, @cContact_Movil, oGet ) ;
FONT oFont ;
OF oDCuenta ; Ajust_xBrws( oBrowse )
REDEFINE SAY oSay[1] VAR cContact_Deta MEMO ID 212 OF oDCuenta UPDATE
REDEFINE SAY oGet[2] VAR cContact_Cargo MEMO ID 213 OF oDCuenta UPDATE
REDEFINE SAY oGet[3] VAR cContact_Direc MEMO ID 214 OF oDCuenta UPDATE
REDEFINE SAY oGet[4] VAR cContact_Email MEMO ID 215 OF oDCuenta UPDATE
REDEFINE SAY oGet[5] VAR cContact_Tel ID 216 OF oDCuenta UPDATE
REDEFINE SAY oGet[6] VAR cContact_Movil ID 217 OF oDCuenta UPDATE
ACTIVATE DIALOG oDCuenta CENTERED
RETURN NIL
/*
FUNCION ESTATICA ActualizaContacto()
Actualiza datos de contactos
*/
STATIC FUNCTION ActualizaContacto( cContact_Deta, cContact_Cargo, cContact_Direc, cContact_Email,;
cContact_Tel, cContact_Movil, oSay )
cContact_Deta := CCMSCONTAC->DETALLE
cContact_Cargo := CCMSCONTAC->CARGO
cContact_Direc := CCMSCONTAC->DIRECCION
cContact_Email := CCMSCONTAC->EMAIL
cContact_Tel := CCMSCONTAC->TELEFONO
cContact_Movil := CCMSCONTAC->MOVIL
IF oGet != NIL
oSay[1]:Refresh() ; oSay[2]:Refresh() ; oSay[3]:Refresh()
oSay[4]:Refresh() ; oSay[5]:Refresh() ; oSay[6]:Refresh()
ENDIF
RETURN NIL