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.

Problema al pintar un Browse

Foro público de Xailer en español
Responder
rcardenas
Mensajes: 55
Registrado: Lun Oct 11, 2004 2:11 am

Problema al pintar un Browse

Mensaje por rcardenas »

Hola
Con la versión Beta 8 para pintar las lineas de un dbBrowse de dos colores alternos hacia esto:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrStdPane := If((oDbf:KeyNo()%2)=0,clAquamarine ,clBisque ) }
pero con la version Beta 9 me manda error en le nClrStdPane.
Cual es la forma correcta ahora?
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
--
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problema al pintar un Browse

Mensaje por ignacio »

Raúl,
Por consistencia con el resto de las clases las propiedades de color son identicas a los demas controles:
nClrPane y nClrText
Y la forma más elegante de hacer lo que quieres es:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrPane := If((nRowPos%2)=0,clAquamarine ,clBisque ) }
(Espero no haber cometido ningún error en el código, no lo he probado)
Fijate que utiliza nRowPos para calcular el color y no Keyno(). nRowPos te da la fila relativa del browse que se está pintando.
Un saludo
--
Ignacio Ortiz
www.xailer.com
"Raúl Eduardo Cárdenas" <rcardenas@fgs2002.com> escribió en el mensaje news:[email=42066ba8@ozsrv2.ozlan.local...]42066ba8@ozsrv2.ozlan.local...[/email]
Hola
Con la versión Beta 8 para pintar las lineas de un dbBrowse de dos colores alternos hacia esto:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrStdPane := If((oDbf:KeyNo()%2)=0,clAquamarine ,clBisque ) }
pero con la version Beta 9 me manda error en le nClrStdPane.
Cual es la forma correcta ahora?
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
rcardenas
Mensajes: 55
Registrado: Lun Oct 11, 2004 2:11 am

Problema al pintar un Browse

Mensaje por rcardenas »

Ignacio
He cambiado la linea como me indicas y no manda error pero ni pinta las lí­neas y ademas no para de mover el cursor, alguna idea
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
"Ignacio Ortiz" <NoNameToAvoidSpam@ozs.com> escribió en el mensaje news:420672ff$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
Raúl,
Por consistencia con el resto de las clases las propiedades de color son identicas a los demas controles:
nClrPane y nClrText
Y la forma más elegante de hacer lo que quieres es:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrPane := If((nRowPos%2)=0,clAquamarine ,clBisque ) }
(Espero no haber cometido ningún error en el código, no lo he probado)
Fijate que utiliza nRowPos para calcular el color y no Keyno(). nRowPos te da la fila relativa del browse que se está pintando.
Un saludo
--
Ignacio Ortiz
www.xailer.com
"Raúl Eduardo Cárdenas" <rcardenas@fgs2002.com> escribió en el mensaje news:[email=42066ba8@ozsrv2.ozlan.local...]42066ba8@ozsrv2.ozlan.local...[/email]
Hola
Con la versión Beta 8 para pintar las lineas de un dbBrowse de dos colores alternos hacia esto:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrStdPane := If((oDbf:KeyNo()%2)=0,clAquamarine ,clBisque ) }
pero con la version Beta 9 me manda error en le nClrStdPane.
Cual es la forma correcta ahora?
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
--
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problema al pintar un Browse

Mensaje por ignacio »

Raúl,
El código es correcto, pero no te funciona porque el cambio de color de fondo esta provocando un repintado completo del Browse.
Ya está solucionado pero hay demasiados módulos involucrados. Espero que podamos subir una versión corregida lo antes posible.
Gracias por tu colaboración.
Un saludo,
--
Ignacio Ortiz
www.xailer.com
"Raúl Eduardo Cárdenas" <rcardenas@fgs2002.com> escribió en el mensaje news:[email=42067dcb@ozsrv2.ozlan.local...]42067dcb@ozsrv2.ozlan.local...[/email]
Ignacio
He cambiado la linea como me indicas y no manda error pero ni pinta las lí­neas y ademas no para de mover el cursor, alguna idea
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
"Ignacio Ortiz" <NoNameToAvoidSpam@ozs.com> escribió en el mensaje news:420672ff$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
Raúl,
Por consistencia con el resto de las clases las propiedades de color son identicas a los demas controles:
nClrPane y nClrText
Y la forma más elegante de hacer lo que quieres es:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrPane := If((nRowPos%2)=0,clAquamarine ,clBisque ) }
(Espero no haber cometido ningún error en el código, no lo he probado)
Fijate que utiliza nRowPos para calcular el color y no Keyno(). nRowPos te da la fila relativa del browse que se está pintando.
Un saludo
--
Ignacio Ortiz
www.xailer.com
"Raúl Eduardo Cárdenas" <rcardenas@fgs2002.com> escribió en el mensaje news:[email=42066ba8@ozsrv2.ozlan.local...]42066ba8@ozsrv2.ozlan.local...[/email]
Hola
Con la versión Beta 8 para pintar las lineas de un dbBrowse de dos colores alternos hacia esto:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrStdPane := If((oDbf:KeyNo()%2)=0,clAquamarine ,clBisque ) }
pero con la version Beta 9 me manda error en le nClrStdPane.
Cual es la forma correcta ahora?
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problema al pintar un Browse

Mensaje por ignacio »

Raúl,
Me corrigo a mismo. El código no es correcto pues falla cuando se hace GoUp() o GoDown() porque en dicho caso se hace un scroll de fí­sico de la ventana y lo que era fila par se convierte en impar y viceversa, por lo tanto la utilización nRowPos para decidir el color a usar no es válido.
El problema es que llamar a OnKeyNo() puede llegar a ser lentí­simo con tablas grandes y en particular con algunos RDD como ADS, por ello acabamos de implementar una data en la clase de nombre nKeyNo que guarda la posición equivalente a OnKeyNo() de forma automática reduciendo el número de llamadas a OnKeyNo() al mí­nimo. Por lo tanto a partir de la próxima beta podrá hacer algo así­:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrPane := If((oBrw:nKeyNo%2)=0,clAquamarine ,clBisque ) }
Sin perder practicamente velocidad alguna.
Actualmente existe un dato 'nLen' que se utiliza igualmente para reducir al máximo las llamadas a OnKeyCount()
Un saludo,
--
Ignacio Ortiz
www.xailer.com
"Ignacio Ortiz" <NoNameToAvoidSpam@ozs.com> escribió en el mensaje news:42073f50$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
Raúl,
El código es correcto, pero no te funciona porque el cambio de color de fondo esta provocando un repintado completo del Browse.
Ya está solucionado pero hay demasiados módulos involucrados. Espero que podamos subir una versión corregida lo antes posible.
Gracias por tu colaboración.
Un saludo,
--
Ignacio Ortiz
www.xailer.com
"Raúl Eduardo Cárdenas" <rcardenas@fgs2002.com> escribió en el mensaje news:[email=42067dcb@ozsrv2.ozlan.local...]42067dcb@ozsrv2.ozlan.local...[/email]
Ignacio
He cambiado la linea como me indicas y no manda error pero ni pinta las lí­neas y ademas no para de mover el cursor, alguna idea
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
"Ignacio Ortiz" <NoNameToAvoidSpam@ozs.com> escribió en el mensaje news:420672ff$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
Raúl,
Por consistencia con el resto de las clases las propiedades de color son identicas a los demas controles:
nClrPane y nClrText
Y la forma más elegante de hacer lo que quieres es:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrPane := If((nRowPos%2)=0,clAquamarine ,clBisque ) }
(Espero no haber cometido ningún error en el código, no lo he probado)
Fijate que utiliza nRowPos para calcular el color y no Keyno(). nRowPos te da la fila relativa del browse que se está pintando.
Un saludo
--
Ignacio Ortiz
www.xailer.com
"Raúl Eduardo Cárdenas" <rcardenas@fgs2002.com> escribió en el mensaje news:[email=42066ba8@ozsrv2.ozlan.local...]42066ba8@ozsrv2.ozlan.local...[/email]
Hola
Con la versión Beta 8 para pintar las lineas de un dbBrowse de dos colores alternos hacia esto:
:OnDrawRow := { | oBrw, nRowPos | oBrw:nClrStdPane := If((oDbf:KeyNo()%2)=0,clAquamarine ,clBisque ) }
pero con la version Beta 9 me manda error en le nClrStdPane.
Cual es la forma correcta ahora?
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder