I have a function (populate_edit_form) declared in a header as such: /* recmanip.h */ #ifndef RECMANIP_H #define RECMANIP_H #include <ncurses.h> #include <form.h> #include <string.h> #include "winmanip.h" #include "dhandler.h" #include "sqlite.h" #define NFIELDS 31 #define FORM_WIDTH 30 #define FORM_STARTY 2 #define FORM_STARTX 1 #define CAPTION_WIDTH 15 struct form { const char title[15]; char value[30]; }; int add_record(void); int populate_edit_form(FIELD *field[NFIELDS], FORM *, WINDOW *); int print_in_middle(WINDOW *, int, int, int, char *, chtype); #endif /* RECMANIP_H */
In one of my files, I call this function like this: /* recmanip.c */ #include "recmanip.h" int add_record(void) { FIELD *field[NFIELDS]; FORM *myform; WINDOW *form_win; int ch, i=0, j=0; struct form form_data[] = { {"id", "" }, {"title", "" }, {"artist", "" }, {"hd", "" }, {"bank", "" }, {"bookmark", "" }, {"active", "" }, {"digitalinput", "" }, {"genre", "" }, {"price", "" }, {"year", "" }, {"remixer", "" }, {"labelid", "" }, {"class", "" }, {"classnumber", "" } }; ===> populate_edit_form(field, myform, form_win); <snip> } int populate_edit_form(FIELD *field[NFIELDS], FORM *myform, WINDOW *form_win) { int i=0, j = 0, rows = 0, cols =0; int maxy, maxx; int form_win_height, form_win_width; int form_win_starty, form_win_startx; char *hd_choices[] = { "A", "B", NULL }; char *active_choices[] = { "Y", "N", NULL }; char *digital_choices[] = { "Yes", "No", NULL }; char *field_names[] = { "ID", "Title", "Artist", "HD", "Bank", "Bookmark", "Active", "Digital Input", "Genre", "Price", "Year", "Remixer", "Label", "Class Type", "Class Number" }; /* Initialize the fields */ /* num rows, num cols, start row, start col, off-screen rows, num buffers */ for(i=0; i<NFIELDS-1; i=i+2, j++) { field[i] = new_field(1, CAPTION_WIDTH, FORM_STARTY+j, FORM_STARTX, 0, 0); field[i+1] = new_field(1, FORM_WIDTH, FORM_STARTY+j, CAPTION_WIDTH+3, 0, 0); } field[NFIELDS-1] = NULL; /* Set field options */ for(i=0, j=0; i<NFIELDS-1; i++) { if(i == 0 || i%2 == 0) { field_opts_off(field[i], O_ACTIVE); set_field_buffer(field[i], 0, field_names[j]); j++; } else if (i%2 != 0) { set_field_back(field[i], A_UNDERLINE); field_opts_off(field[i], O_AUTOSKIP); if(i == 1) { field_opts_off(field[i], O_ACTIVE); set_field_buffer(field[i], 0, "ID auto-generated"); } else if(i==3 || i==5 || i==7 || i==15 || i==23) { set_field_buffer(field[i], 0, "Unknown"); } else if(i==9 || i==11 || i==25 || i==29) { set_field_buffer(field[i], 0, "0"); } else if(i==13) { set_field_buffer(field[i], 0, "Inactive"); } else if(i==17 || i==27) { set_field_buffer(field[i], 0, "Unclassified"); } else if(i==19) { set_field_buffer(field[i], 0, "9.99"); } else if(i==21) { set_field_buffer(field[i], 0, "1900"); } if(i == 7) /* HD */ set_field_type(field[i], TYPE_ENUM, hd_choices, 0, 0); if(i == 9) /* Bank */ set_field_type(field[i], TYPE_INTEGER, 0, 0, 25); if(i == 11) /* Bookmark */ set_field_type(field[i], TYPE_INTEGER, 0, 0, 11); if(i == 13) /* Active */ set_field_type(field[i], TYPE_ENUM, active_choices, 0, 0); if(i == 15) /* Digital Input */ set_field_type(field[i], TYPE_ENUM, digital_choices, 0, 0); if(i == 19) /* Price */ set_field_type(field[i], TYPE_NUMERIC, 2, 0, 0); if(i == 21) /* Year */ set_field_type(field[i], TYPE_INTEGER, 0, 1900, 2100); if(i == 29) /* Class Number */ set_field_type(field[i], TYPE_INTEGER, 0, 1, 24); } } /* Create the form */ myform = new_form(field); /* Calculate the smallest area required for the form */ scale_form(myform, &rows, &cols); /* Create form window */ getmaxyx(stdscr, maxy, maxx); form_win_height = rows+5; form_win_width = cols+5; form_win_starty = (maxy - form_win_height)/2; form_win_startx = (maxx - form_win_width)/2; form_win = create_newwin(form_win_height, form_win_width, form_win_starty, form_win_startx); keypad(form_win, TRUE); /* Set main & sub window */ set_form_win(myform, form_win); set_form_sub(myform, derwin(form_win, rows, cols, 2, 1)); /* x, y relative to form_win */ print_in_middle(form_win, 1, 0, form_win_width, "Add Record (F1 to exit)", COLOR_PAIR(1)); /* Post form */ post_form(myform); refresh(); curs_set(1); } I'm getting a blank form. I could put all of this in one block, but, when I want to delete a record, I don't want to write duplicate code, hence, passing the FIELD, FORM, & WINDOW objects. The address for the form is being passed to the function, but, I'm not sure if I'm declaring it right. I'm still getting used to pointers and array-pointers. Thanks. -- VR~ TW Email: twilliams...@elp.rr.com _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users