Página 1 de 1

Problema al pintar un Browse

Publicado: Dom Feb 06, 2005 8:10 pm
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
--

Problema al pintar un Browse

Publicado: Dom Feb 06, 2005 8:41 pm
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
--

Problema al pintar un Browse

Publicado: Dom Feb 06, 2005 9:27 pm
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
--

Problema al pintar un Browse

Publicado: Lun Feb 07, 2005 11:13 am
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
--

Problema al pintar un Browse

Publicado: Lun Feb 07, 2005 8:32 pm
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
--