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í)