Tutorial BBjGrid (parte 2)

La apariencia de nuestra Grid debiera ser semejante a esta:

La apariencia de la Grid cuando está siendo editada debiera ser semejante a esta:

Paso 20. Tenemos que registrar los Callbacks e iniciar el ciclo de eventos. El ciclo de eventos es necesario para el manejo opcional de la grid.

REM "Registra callbacks para controlar algunos eventos

REM "Solo necesitas registrar eventos que quieres manejar

CALLBACK(ON_CHECK_ON,ACTIVA_EDICION,sysgui!.getContext(),editable!.getID())

CALLBACK(ON_CHECK_OFF,DESACTIVA_EDICION,sysgui!.getContext(),editable!.getID())

CALLBACK(ON_GRID_DOUBLE_CLICK,DOBLECLICK_GRID,sysgui!.getContext(),miGrid!.getID())

CALLBACK(ON_CLOSE,CIERRA_APLIC,sysgui!.getContext())

rem

rem "Procesa Eventos

rem "===============

PROCESS_EVENTS

REM

Paso 21. Cuando la casilla de verificación es marcada o desmarcada el Callback registrado llamara a una de éstas dos subrutinas, que activan o desactivan la edición en la grid

REM "Activa o desactiva edicion

REM "==========================

ACTIVA_EDICION:

miGrid!.setGridEditable(1)

RETURN

REM

DESACTIVA_EDICION:

miGrid!.setGridEditable(0)

RETURN

REM

Paso 22. Si el usuario hace doble click sobre una celda, pero la grid no está “editable”, usa métodos para averiguar el estado o texto que contiene la celda y entonces despliega un mensaje indicando el contenido de la celda. Para recuperar la cadena de evento usa BBjSysGui::getLastEvent. Esto permite al método recuperar más información desde el evento, en este caso la fila y la columna donde se hizo el doble click.

DOBLECLICK_GRID:

eventoGrid!=sysgui!.getLastEvent()

fila=eventoGrid!.getRow()

colu=eventoGrid!.getColumn()

if MiGrid!.isEditable()=0 then

if colu=numcol-1 then

REM “REVISA EL ESTADO DE LA COLUMNA

marcado = miGrid!.getCellState(fila,colu)

if marcado=0 then

mensaje$="No se pronostican lluvias"

else

mensaje$="Se pronostican lluvias"

endif

else

REM “Obtiene el texto de la celda

CELDA$=miGRID!.getCellText(fila,colu)

mensaje$="La temperatura a esa hora será de "+$0A$+CELDA$+$0A$+"grados Fahrenheit"

endif

REM "DESPLIEGA EL MENSAJE CORRESPONDIENTE

REM "====================================

X=msgbox(mensaje$,0+48+0,”Pronostico”)

endif

RETURN

REM

Paso 23. Agregamos la necesario subrutina para salir de la aplicación:

REM "Rutina Callback llamada cuando el usuario cierra la ventana de la aplicación

REM "============================================================================

CIERRA_APLIC:

RELEASE

RETURN

La apariencia de la grid después de hacer doble click cuando no está en modo editable:

Así cerramos el ciclo completo de la aplicación manejando BBjStandardGrid con mucha de la funcionalidad más común de la cual disponemos en la nueva sintaxis de objetos de BBj.

Seguro este tutorial te permitirá apreciar la simplificación que logramos usando esta nueva modalidad. Ahora aplica tus conocimientos a las grids de tus propios programas.

PARA UNA LISTA DETALLADA DE MÉTODOS DISPONIBLES PARA USO CON BBjStandarGrid (Pincha aquí)