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.

Bug en browse

Foro público de Xailer en español
hgarciaj
Mensajes: 107
Registrado: Jue Sep 23, 2010 12:44 am

Bug en browse

Mensaje por hgarciaj »

En la versión 4 de Xailer al usar arraybrowse, cuando se agrega una fila con el método addrow() al final del espacio definido para el browse, hay un error al momento de crear las coordenadas del gridedit:
Supongamos que el browse tiene espacio para mostrar 10 renglones, cuando se llama al método addrow() y se edita, primero calcula las coordenadas de la fila 11 lo cual sería correcto si estuviéramos colocados entre la fila 1 y la 9 pero en este caso ya no está bien, pues después de establecer las coordenadas del gridedit hace un refresh del browse y muestra como es de esperar, de la fila 2 a la 9 y una fila en blanco, pero las coordenadas del gridedit no corresponden a las de la fila 10 sino a las de la fila 11, lo que hace que al momento de editar se vea solo una parte del espacio de edición. Para corregir este detalle modifiqué la clase browcol, pero creo que debe ser corregida desde el origen. El código para evitar el comportamiento erróneo lo modifiqué en el método SetGridEditBounds() de la clase TBrwColumn agregando las líneas de código resaltadas:

METHOD SetGridEditBounds() CLASS TBrwColumn

LOCAL nRow, nCol, nWidth, nHeight, nSel

IF ::oGridEdit == Nil
RETURN NIL
ENDIF

WITH OBJECT ::oParent
nSel := :nRowSel
IF :nEditMode == beAPPEND .AND. :nPhantomRow != 0 // Append con registro fantasma
IF :nDataRows == 0 .AND. nSel == 1
nSel := 0
ENDIF
ELSE
nSel--
ENDIF
IF (:nRowSel * :nIntRowHeight) + :HeaderHeight() + :FooterHeight() > :nHeight
nSel--
ENDIF


No se si persista este error en la nueva versión de Xailer o si es correcta la modificación, pero a mi me ayudó :D
Saludos
Héctor García
Responder