In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

arraybrowse

Foro de Xailer profesional en español
Responder
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

arraybrowse

Mensaje por Francisco Sanchez »

Vamos a ver, en el curso de madrid vi como lo mostrasteis. Un array browse
con x filas y n columnas, y en cada elemento de ese array hay a su vez
asociado un array con una serie de datos. Y la idea es mostrar en funcion
del valor de uno de esos datos asociados a cada elemento del arraybrowse, de
un color distinto. Osea no color por filas, sino por celdas. Podrias ponerme
un ejemplo para poder trabajarmelo? Es un arraybrowse, sin datasets ni
ningun tipo de datacontrol. Ojo.
Atentamente : Francisco Sanchez GERENTE GRUPO ST - Software TOTAL - LT 3000
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

arraybrowse

Mensaje por ignacio »

Francisco,
Te remito al ejemplo samplesbrowsesdbfbuilder.xpj
Saludos,
"Francisco Sanchez" <francisco@softwaretotal.biz> escribió en el mensaje
news:42b7dd17$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Vamos a ver, en el curso de madrid vi como lo mostrasteis. Un array browse
> con x filas y n columnas, y en cada elemento de ese array hay a su vez
> asociado un array con una serie de datos. Y la idea es mostrar en funcion
> del valor de uno de esos datos asociados a cada elemento del arraybrowse,
> de un color distinto. Osea no color por filas, sino por celdas. Podrias
> ponerme un ejemplo para poder trabajarmelo? Es un arraybrowse, sin
> datasets ni ningun tipo de datacontrol. Ojo.
>
> Atentamente : Francisco Sanchez GERENTE GRUPO ST - Software TOTAL - LT
> 3000
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

arraybrowse

Mensaje por Francisco Sanchez »

ok vi el ejemplo pero probe con el Ondrawcell, pero claro en ese ejemplo
hace una busqueda en todo el array, y yo solo quisiera buscar en el array,
pero justamente en ese elemento, que es lo que no veo como determinar asi de
forma simple.
WITH OBJECT :oArrayBrowse_distribucion
:SetArray( ::aArrayData_BROWSE_DISTRIBUCION, {}, .T. )
WITH OBJECT :aCols[1]
:OnDrawCell := { |oSender, nText, nPane | nPane := IIf(
Ascan( :oArrayBrowse_DISTRIBUCION:aArrayData, {|v,e| v[4] == .T. } ),
CLR_RED, CLR_GREEN ) }
END WITH
END WITH
pero esto esta mal, pues no veo como posicionarlo justamente en el elemento
del array que estoy, para evitar el hacer una ascan puesto que no tiene
sentido , se trata de una celda en concreto.
Atentamente : Francisco Sanchez GERENTE GRUPO ST - Software TOTAL - LT 3000
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

arraybrowse

Mensaje por ignacio »

Francisco,
Puedes utilizar oSender:OnGetValue() para recuperar el valor de la celda,
pero creo que efectivamente deberiamos de pasar al evento incluso por
referencia el texto que se va a mostrar y por ello he pensado en modificar
el evento de la siguiente forma:
EVENT OnDrawCell( oSender, cText, nClrText, nClrPane, lHighLite )
Logicamente esto rompe algo el codigo de los que esten utilizando este
evento pero la solución de poner cText al final no me gusta demasiado.
Si no hay ninguna objeción procedo al cambio.
Un saludo,
"Francisco Sanchez" <francisco@softwaretotal.biz> escribió en el mensaje
news:42b832f1$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> ok vi el ejemplo pero probe con el Ondrawcell, pero claro en ese ejemplo
> hace una busqueda en todo el array, y yo solo quisiera buscar en el array,
> pero justamente en ese elemento, que es lo que no veo como determinar asi
> de forma simple.
>
> WITH OBJECT :oArrayBrowse_distribucion
> :SetArray( ::aArrayData_BROWSE_DISTRIBUCION, {}, .T. )
> WITH OBJECT :aCols[1]
> :OnDrawCell := { |oSender, nText, nPane | nPane := IIf(
> Ascan( :oArrayBrowse_DISTRIBUCION:aArrayData, {|v,e| v[4] == .T. } ),
> CLR_RED, CLR_GREEN ) }
> END WITH
> END WITH
>
> pero esto esta mal, pues no veo como posicionarlo justamente en el
> elemento del array que estoy, para evitar el hacer una ascan puesto que no
> tiene sentido , se trata de una celda en concreto.
>
> Atentamente : Francisco Sanchez GERENTE GRUPO ST - Software TOTAL - LT
> 3000
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

arraybrowse

Mensaje por Francisco Sanchez »

hombre asi a vote pronto creo que con eso ya bastaria, pero ojo, un pequeño
inconveniente, si hay varias celdas con el mismo valor?,, je lo ideal seria
el nº de elemento del arraydata del arraybrowse.
Atentamente : Francisco Sanchez GERENTE GRUPO ST - Software TOTAL - LT 3000
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9443
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

arraybrowse

Mensaje por ignacio »

Francisco,
Fila: oBrowse:nArrayAt
Columna: oSender:nIndex
Saludos,
"Francisco Sanchez" <francisco@softwaretotal.biz> escribió en el mensaje
news:42b8470d$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> hombre asi a vote pronto creo que con eso ya bastaria, pero ojo, un
> pequeño inconveniente, si hay varias celdas con el mismo valor?,, je lo
> ideal seria el nº de elemento del arraydata del arraybrowse.
>
> Atentamente : Francisco Sanchez GERENTE GRUPO ST - Software TOTAL - LT
> 3000
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

arraybrowse

Mensaje por Francisco Sanchez »

algo ando haciendo mal :
:OnDrawCell := { |oSender, nText, nPane| nPane := If(
oForm:aArrayData_distribucion[::Pos_Col_Brw( oForm, oSender,
:oArrayBrowse_distribucion ),4] == .T., CLR_RED, CLR_GREEN ) }
siendo aarraydata_distribucion un array paralelo que contiene los datos de
cada elemento, aunque creo que si existe el dato cargo en cada elemento del
arraybrowse utilizare el cargo.
METHOD Pos_Col_Brw( oForm, oSender, oBrowse ) CLASS TMant_Pr
local nIndexFila, nIndexColum, nValue := oForm:oMaskEdit_num:value
local nIndexElemento
nIndexFila := oBrowse:nArrayAt
nIndexColum := oSender:nIndex
If nIndexFila > 1
nIndexElemento := ((nIndexFila-1)*nValue)+nIndexColum
Else
nIndexElemento := nIndexColum
Endif
RETURN ( nIndexElemento )
//--//
ahi estan lo que utilizo y me da error, seguramente sera la declaracion del
oArrayBrowse_distribucion que lo declare asi :
nValores := nTotal/nCols
::aArrayData_BROWSE_DISTRIBUCION := ARRAY(nValores)
FOR i := 1 TO nValores
::aArrayData_BROWSE_DISTRIBUCION := array( nCols)
NEXT
::aArrayData_DISTRIBUCION := Aclone( aFieldsD ) //siendo afieldsd los
valores de la dbf. en este array es donde voy a buscar el valor si es .t.
Uff vaya lio, y no veo como solucionarlo
Atentamente : Francisco Sanchez GERENTE GRUPO ST - Software TOTAL - LT 3000
Responder