Como hago para eliminar registro de grid por menu contextual

Tengo una grilla con registros, y cuando le doy clic derecho sobre el registro que desel eliminar, pongo un método llamado "eliminarregistro", el cual ya lo había creado dentro del formulario, pero me sale el siguiente error: Thisform solo se usa en un método. ¿Cómo puedo corregir esto? Envío parte de mi código:

Evento RightClick:

nX = MROW()
nY = MCOL()
CADEA=ALLTRIM(thisform.grid1.column1.text1.value)
DEFINE POPUP mMenu_grilla SHORTCUT RELATIVE FROM nX, nY
DEFINE BAR 1 OF mMenu_grilla PROMPT "Actualizar"
DEFINE BAR 2 OF mMenu_grilla PROMPT "Eliminar"
ON SELECTION BAR 1 OF mMenu_grilla thisform. Codigoactualizar()
ON SELECTION BAR 2 OF mMenu_grilla thisform.codigoeliminar()
ACTIVATE POPUP mMenu_grilla
release popups mMenu_grilla extended

Metodo codigoeliminar:

delete FROM trooster WHERE (Cod_Roos==CADEA)
thisform.grid1.Refresh
WAIT WIND "Eliminado - "+ cadea

Respuesta

No lo puedes hacer así.

Sugiero que muevas o prepares un código en un procedimiento (enviándole un parámetro) para borrar ese registro seleccionado en tu grid.

2 respuestas más de otros expertos

Respuesta

Para entender el error, debes Tomar en cuente que el Código de la función que creas (CodigoEliminar) es un Proceso independiente, es decir, no debe hacer llamados directos a componentes Visuales.

Todos los objetos que necesitas Utilizar, o ejecutar un método de el, puede ser usado, mediante Parámetros de entrada a tu función:

****

Procedure codigoeliminar

Parameters objetoGrid

delete FROM trooster WHERE (Cod_Roos==CADEA)

objetoGrid.Refresh()

WAIT WIND "Eliminado - "+ cadea

****

Suerte!

Respuesta

Noe Macedo,

Yo recomiendo probar con un único y pequeño cambio; el "_screen.activeform" en lugar de "thisform" ... pruébalo y veremos si con eso se soluciona. Saludos.

*************

ON SELECTION BAR 1 OF mMenu_grilla _screen. Activeform. Codigoactualizar()

ON SELECTION BAR 2 OF mMenu_grilla _screen. Activeform. Codigoeliminar()

*************

Añade tu respuesta

Haz clic para o