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.
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
-
- Mensajes: 532
- Registrado: Mié Feb 09, 2005 6:20 pm
arraybrowse
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
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
- Site Admin
- Mensajes: 9443
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
arraybrowse
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
>
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
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
-
- Mensajes: 532
- Registrado: Mié Feb 09, 2005 6:20 pm
arraybrowse
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
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
- Site Admin
- Mensajes: 9443
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
arraybrowse
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
>
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
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
-
- Mensajes: 532
- Registrado: Mié Feb 09, 2005 6:20 pm
arraybrowse
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
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
- Site Admin
- Mensajes: 9443
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
arraybrowse
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
>
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
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
-
- Mensajes: 532
- Registrado: Mié Feb 09, 2005 6:20 pm
arraybrowse
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
: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