Page 1 of 1

xBrowse(empty) x bRClicked

Posted: Wed Nov 19, 2008 5:20 pm
by Johnson
porque xbrowse vazio nao aceita xBro:bRClicked := { | nRow, nCol | MyFunction(nRow, nCol, .... ) } ?

twbrowse usava sem problema.

Posted: Wed Nov 19, 2008 10:55 pm
by joseluisysturiz
esta solucion es de parte de MCFOX, el cual estabamos buscandole la vuelta, parece es un detalle de la clase.

Textualmente de MCFOX:

"...pienso que es un pequeño bug de la clase
"bRClicked" es una data que viene heredada de control,
cuando se presiona RCLICK xbrowse llama al methodo oBrw:RButtonDown(),
que hara las verificaciones pertinentes para ejecutar los code block respectivos al evento,
pero si estan dentro de un rango fila y/o columna, cuando no hay datos en el browse
no existe una validacion que verifique si "bRClicked" es diferente a NIL ( aqui es
donde creo yo esta el bug ) si se presiona el RCLICK fuera de un rango fila y/o columna
se ejecuta el metodo "RButtonDown" de la clase heredera tambien se ejecuta a medidas que se va
creando registros y se hace el click dentro de ese rango, se puede arreglar de la
siguiente forma:

ubica esta lineas en el metodo RButtonDown de xbrowse

If nColPos != 0 .and. nRowPos != 0
return Super:RButtonDown( nRow, nCol, nKeyFlags )
endif

y agrega este .or.

If nColPos != 0 .and. nRowPos != 0 .or. ::bRClicked != NIL
return Super:RButtonDown( nRow, nCol, nKeyFlags )
endif

si no quieres modificar la clase

en vez de usar bRClicked, usa la data de la columnas bRClickData para asignarle
el code block a cada columna ..."


FOR nN := 1 TO LEN( oBrwInv:aCols )
oBrwInv:aCols[ nN ]:bRClickData := { || If( RecCount() == 0, msginfo( "Vacio..." ), ) }
NEXT

esta probado y funciona...

Posted: Thu Nov 20, 2008 4:45 pm
by Johnson
PERFECT
gracias Jose Luis
Un abrazo