by cnavarro » Wed Jan 27, 2016 8:56 pm
mastintin wrote:Necesito me ayudeis con un xbrowse ... es una cosa muy concreta y voy a intentar resumirla a ver si me explico bien ...
En xbrowse de varias columnas con alias de una dbf ... en su primera columna se colocan unos bitmpas y nos valores que son calculados en una función muy compleja ...
obrW:aCols[1]:bBmpData := { || ncondicion( cAlias ) } // devuelve un valor numerico del 1 al 5
obrW:aCols[1]:bEditVale := { || ponCaracter( ncondicion( calias ) ) } // devuelve un carácter que depende del valor de nCondicion
El tema es que la fusión nCondicion es una función compleja que lleva su tiempo y al ejecutarse por duplicado hace el xbrowse bastante lento . como podría codificarlo para que solo se ejecutase una vez.
Seguro que es sencillo pero no se realmente como hacerlo .
Saludos.
Manuel, lo hago "al vuelo", pero se me ocurre algo asi
Yo modificaria la function nCondicion( cAlias ) para que devolviera un array con los dos valores { valor numerico 1-5, caracter }
- Code: Select all Expand view
obrW:aCols[1]:bBmpData := { || MyCondicion( cAlias, oBrw, ) } // devuelve un valor numerico del 1 al 5
obrW:aCols[1]:bEditVale := { || ponCaracter( oBrw:cargo[ 2 ] ) } // devuelve un carácter que depende del valor de nCondicion
.../...
Function MyCondicion( cAlias, oBrw, nPos )
DEFAULT nPos := 0
if Empty( nPos )
oBrw:Cargo := nCondicion( cAlias )
nPos := 1
endif
Return oBrw:Cargo[ nPos ] //1
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces