porque xbrowse vazio nao aceita xBro:bRClicked := { | nRow, nCol | MyFunction(nRow, nCol, .... ) } ?
twbrowse usava sem problema.
xBrowse(empty) x bRClicked
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
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...
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...
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!