TableView
Funciones
TableView* | tableview_create (void) |
void | tableview_OnNotify (...) |
void | tableview_size (...) |
uint32_t | tableview_new_column_text (void) |
void | tableview_column_width (...) |
void | tableview_header_font (...) |
void | tableview_header_title (...) |
void | tableview_header_align (...) |
void | tableview_data_update (...) |
Elemento en construcción. Estará disponible en las próximas versiones del SDK. Las funciones API podrían cambiar.
Los TableView son controles que muestran información tabulada organizada en filas y columnas (Figura 1), (Figura 2), (Figura 3). El control habilita barras de scroll cuando sea necesario y permite la navegación mediante el teclado. En ¡Hola TableView! tienes un ejemplo de uso.
- Utiliza tableview_create parar crear un control de tabla.
- Utiliza tableview_new_column_text para añadir una columna de texto.
- Utiliza tableview_column_width para establecer el ancho de la columna.



1. Tipos de columnas
TODO
2. Conexión con datos
Pensemos que una tabla puede contener miles de registros y estos pueden cambiar en cualquier momento desde los orígenes de datos de la aplicación. Por este motivo, el TableView no guardará ningún dato de forma local. Se ha diseñado con el objetivo de mostrar la información de la forma más optimizada y rápida posible.
- Utiliza tableview_OnNotify para vincular la tabla con la aplicación.
- Utiliza tableview_data_update para actualizar los datos de la tabla.
Cuando la tabla deba dibujar su contenido, mandará a la aplicación un evento del tipo ekEVTBLNROWS para poder dimensionar correctamente el espacio interno del control, así como sus barras de scroll (Figura 4). Posteriormente irá lanzando sucesivos eventos ekEVTBLCELL para que la aplicación envíe el contenido de cada celda (Figura 5). Todos estos eventos se enviarán a través de la función callback asignada en tableview_OnNotify (Listado 1).
TableView solo pedirá el contenido de la parte visible en cada momento.
Es responsabilidad de la aplicación crear una caché de datos si fuera necesario. La respuesta hacia TableView deberá ser muy rápida para evitar retrasos en el dibujado de los datos.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
static void i_OnTableNotify(App *app, Event *e) { uint32_t etype = event_type(e); unref(app); switch(etype) { case ekEVTBLNROWS: { uint32_t *n = event_result(e, uint32_t); *n = app_num_rows(app); break; } case ekEVTBLCELL: { const EvTbPos *pos = event_params(e, EvTbPos); EvTbCell *cell = event_result(e, EvTbCell); switch(pos->col) { case 0: cell->text = app_text_column0(app, pos->row); break; case 1: cell->text = app_text_column1(app, pos->row); break; case 2: cell->text = app_text_column2(app, pos->row); break; } break; } } } ... TableView *table = tableview_create(); tableview_OnNotify(table, listener(app, i_OnTableNotify, App)); ... tableview_data_update(table); |
3. Notificaciones de tablas
Toda la comunicación entre la aplicación y el TableView se realizará a través de una función callback (o listener), asignada mediante la función tableview_OnNotify. A continuación se muestran todos los tipos de eventos que pueden ser lanzados por el control (Tabla 1).
Evento | Tipo | Parámetros | Respuesta |
Obtener el número de filas de la tabla | ekEVTBLNROWS | - | uint32_t |
Obtener el contenido de una celda | ekEVTBLCELL | EvTbPos | EvTbCell |
... | ... | ... | ... |
tableview_create ()
Crea un nuevo control de tabla.
TableView* tableview_create(void);
Retorna
El TableView.
tableview_OnNotify ()
Establece un manejador para la comunicación tabla-aplicación.
void tableview_OnNotify(TableView *view, Listener *listener);
view | El TableView. |
listener | Función callback que se llamará cada vez que la aplicación debe ser notificada de algún evento en la tabla. |
Observaciones
tableview_size ()
Establece el tamaño por defecto del control tabla.
void tableview_size(TableView *view, const S2Df size);
view | El TableView. |
size | El tamaño. |
Observaciones
Corresponde al Dimensionado natural del control. Por defecto 256x128.
tableview_new_column_text ()
Añade una nueva columna a la tabla.
uint32_t tableview_new_column_text(void);
Retorna
El identificador (índice) de columna.
Observaciones
Ver Tipos de columnas.
tableview_column_width ()
Establece el ancho de una columna.
void tableview_column_width(TableView *view, const uint32_t column_id, const real32_t width);
view | El TableView. |
column_id | El identificador de columna. |
width | El ancho de columna. |
tableview_header_font ()
Establece la fuente para la cabecera de la tabla.
void tableview_header_font(TableView *view, const Font *font);
view | El TableView. |
font | La fuente. |
tableview_header_title ()
Establece el texto de la cabecera de una columna.
void tableview_header_title(TableView *view, const uint32_t column_id, const char_t *text);
view | El TableView. |
column_id | El identificador de columna. |
text | El texto en UTF-8 o el identificador del recurso. Recursos. |
tableview_header_align ()
Establece la alineación del texto de la cabecera.
void tableview_header_align(TableView *view, const uint32_t column_id, const align_t align);
view | El TableView. |
column_id | El identificador de columna. |
align | La alineación. |
tableview_data_update ()
Sincroniza la tabla con el origen de datos.
void tableview_data_update(TableView *view);
view | El TableView. |
Observaciones
Deberemos llamar a esta función desde la aplicación siempre que cambien los datos vinculados con la tabla, con el fin de actualizar la vista. Ver Conexión con datos.