Página 1 de 1

Bug en browse

Publicado: Mar Dic 19, 2017 8:56 pm
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