ayuda con un xbrowse

ayuda con un xbrowse

Postby mastintin » Wed Jan 27, 2016 8:30 pm

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.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: ayuda con un xbrowse

Postby 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
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: ayuda con un xbrowse

Postby mastintin » Wed Jan 27, 2016 9:42 pm

Cristobal , muy buena idea usar oBrw:cargo para guardar el valor .
Con esto estaría solucionado siempre que bBmpData se ejecute antes que bEditValue y así obrW:cargo tenga el valor correcto .

podría quedar así :

obrW:aCols[1]:bBmpData := { || obrW:Cargo:=ncondicion( cAlias ), obrW:cargo } // devuelve un valor numerico del 1 al 5
obrW:aCols[1]:bEditVale := { || ponCaracter( obrW:cargo ) } // devuelve un carácter que depende del valor de nCondicion

Mañana lo miro y cometo ...
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: ayuda con un xbrowse

Postby mastintin » Thu Jan 28, 2016 11:23 am

solucionado usando Cargo . Gracias. :D
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: ayuda con un xbrowse

Postby cnavarro » Thu Jan 28, 2016 11:25 am

Me alegro mucho, señor
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
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 64 guests