SDK Multiplataforma en C logo

SDK Multiplataforma en C

TableView

❮ Anterior
Siguiente ❯

Funciones

TableView*tableview_create (void)
voidtableview_OnNotify (...)
voidtableview_size (...)
uint32_ttableview_new_column_text (void)
voidtableview_column_width (...)
voidtableview_header_font (...)
voidtableview_header_title (...)
voidtableview_header_align (...)
voidtableview_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.
  • Captura de un control TableView en Windows.
    Figura 1: Control TableView en Windows.
    Captura de un control TableView en macOS.
    Figura 2: Control TableView en macOS.
    Captura de un control TableView en Linux.
    Figura 3: Controles ListBox en Linux.

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.

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.
Muestra gráficamente el evento de petición del número de filas.
Figura 4: Petición del número de filas (conjunto de datos).
Muestra gráficamente el evento de petición de datos en celdas.
Figura 5: Petición de los datos de una celda.
Listado 1: Ejemplo de conexión de 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).

Tabla 1: Lista de todos los eventos de tabla.
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

Ver Notificaciones de tablas.


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.

❮ Anterior
Siguiente ❯