From: Ricardo Markiewicz Date: Wed, 14 Apr 2004 18:44:37 +0000 (+0000) Subject: * Se restaura el control del scroll al ver registros. X-Git-Tag: svn_import_r684~490 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/27dcebf2414a7fe37fa130561d14d8bf29e9b12d?ds=sidebyside * Se restaura el control del scroll al ver registros. --- diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 072bb9a..83b5fb8 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -94,7 +94,7 @@ t_LstArticulos *art_cargar(const char *filename, int tipo) node = node->next; } - tmp->fp = emufs_crear("articulos", tipo-1, sizeof(t_Articulo)*4+128, sizeof(t_Articulo)); + tmp->fp = emufs_crear("articulos", tipo-1, sizeof(t_Articulo)*40+128, sizeof(t_Articulo)); for (node=inicio ; node ; node = node->next) { if (node->type == XML_ELEMENT_NODE) { if (strcmp(node->name, "ARTICULO") == 0) { diff --git a/emufs_gui/registros.c b/emufs_gui/registros.c index ab6b5bc..4877b88 100644 --- a/emufs_gui/registros.c +++ b/emufs_gui/registros.c @@ -21,7 +21,7 @@ void ver_registros(WINDOW *padre, int w, int h) char *data; /* Registros a mostrar en pantalla */ char codigo[50]; /* Variable para guardar el codigo actual para mandar a modificar */ EMUFS *fp; - int pos_actual, ancho_registro; + int pos_actual, ancho_registro, offset, pos; fp = emufs_abrir("articulos"); total_indice = emufs_idx_get_count(fp); @@ -32,7 +32,7 @@ void ver_registros(WINDOW *padre, int w, int h) ancho_registro = sizeof(t_Articulo)-sizeof(unsigned int)*2+20; - max_scroll = size / (w/3-2) - (h-8); + max_scroll = size / (w-4) - (h-8); if (max_scroll < 0) max_scroll = 0; actual[0] = derwin(padre, h-6, w-2, 1, 1); @@ -101,6 +101,7 @@ void ver_registros(WINDOW *padre, int w, int h) case 'z': /* Scroll */ scroll++; if (scroll > max_scroll) scroll = max_scroll; + break; case 'l': if (ant_indice < total_indice) { ant_indice++; @@ -125,11 +126,15 @@ void ver_registros(WINDOW *padre, int w, int h) /* Imprimo los registros */ if (data) { - mvwaddnstr(actual[1], 0, 0, data, pos_actual); + offset = scroll*actual_ancho; + pos = pos_actual - offset; + mvwaddnstr(actual[1], 0, 0, data+offset, pos); + offset += pos; wattron(actual[1], A_BOLD); - waddnstr(actual[1], data+pos_actual, ancho_registro); + waddnstr(actual[1], data+offset, ancho_registro); wattroff(actual[1], A_BOLD); - waddnstr(actual[1], data+pos_actual+ancho_registro, size-(pos_actual+ancho_registro)); + offset += ancho_registro; + waddnstr(actual[1], data+offset, size-offset); } wrefresh(actual[1]);