Varios controles de Gridsviews extendidos, ordenamientos, filtrado, conversion csv…
Un “extended gridview” (egv
+ egf
), con ordenamiento, data en memoria y busqueda indexada,
la fuente se mantiene en ram, similar a tabletools.
El exGridfilter (egf
) implementa su manejo de formulario, integra una barra de capacidades
de busqueda y permite definir un menu de exportacion y acciones customizadas.
Esta es la implementacion de exGridview (egv
).
Actualmente si la fuente es un resultado de una consulta de base de datos,
fallara si la conexcion es odbc
, esto porque en gambas dependiendo de la implementacion
del modulo unixodbc
puede que el cursor sea Foward-only
, esto imposibilita
obtener un Count
y mucho menos iterar aleatoriamente en los resultados.
Si no se puede iterar aleatoriamente en los resultados no se puede llenar rapido el grid
Sin embargo, se puede usar una base de datos SQLite como “man in the middle”, el framework
implementara esto en ExDBManager (edbm
) de manera automatica ya que levantara por defecto una db en ram.
Extiende de Gridview
usa una propiedad source
para manejar los datos todos en ram:
' elformato de la fuente source si es matrix, es primera linea titulos, resto filas
titulos = ["tcel1", "tcel2"]
filas.Add(titulos, 0)
filas.Add(["cel1", "cel2"], 1)
filas.Add(["cel3", "cel4"], 1)
' titulos se pueden sobreescribir por defecto son detectados de la fuente source
titulos = ["colum1", "colum2"] ' para eso hay que ponerlos primero de las fuentes
egvobj.setHeads = True ' forzar la habilitacion
egvobj.titles = titulos ' entonces coloco los titulos, despues desabilitarlos
' egvobj esta pegado en el form, la fuente puede ser un Result desde db
egvobj.setHeads = False ' si quiero todas las filas, primero sin titulo
egvobj.source = filas ' entonces añade todo incluso la primera fila
Se puede definir un menu y asignarlo en las propiedades, sin embargo al instanciar o
el egf
se puede directamente a la propiedad menuDefault
= True
El ancho se controla con la propiedad widths que es un integer[] en la que se puede poner un ancho fijo, -1 para un ancho estándar y -2 para un ancho adaptativo por cada columna.
Esta propiedad está relaciona con otra expandcols
de tipo bóolean. El comportamient
a. Si definido ancho de una columna en la propiedad widths, ese ancho se respeta siem b. Si indefinido ancho para una columna y expandcols es true, esa columna se adaptará c. Si indefinido ancho para una columna y expandcols es false, esa columna tomará un
Ejemplo:
miGrid.rows.count=5 'cinco columnas
miGrid.expandcols=true
miGrid.widths=[100,50]
Las dos primeras columnas serán de 100 y 50 de ancho respectivamente y el resto se ad
miGrid.widths=[100,50,-2,-1,-1]
Las dos primeras serán fijas, la tercera se adaptará y las dos últimas tendrán un anc Si no estableces ningún valor para widths, entonces, todas las columnas se adaptarán
En widths puedes poner tantos valores como columnas haya o menos. Si una columna adap
WordWrap
lo que hace es adaptar el alto de la línea para que quepa todo el contenid
del campo. Si es false
, sólo aparecerá el que quepa en el ancho de la columna.