int listSetExt( GOC_HANDLER uchwyt, const char **pTable, unsigned int size) { GOC_StList *lista = (GOC_StList*)uchwyt; goc_listClear(uchwyt); /* Jesli nie ma zadnej kolumny, to zbuduj */ if ( lista->nKolumna == 0 ) goc_listAddColumn(uchwyt, goc_elementGetWidth(uchwyt)); lista->pKolumna[0]->pText = (char **)pTable; lista->pKolumna[0]->nText = size; lista->flag |= GOC_LISTFLAG_EXTERNAL; return GOC_ERR_OK; }
int main() { GOC_MSG wiesc; GOC_HANDLER lista; GOC_HANDLER lista2; lista = goc_elementCreate(GOC_ELEMENT_SELLIST, 1, 1, 20, 10, GOC_EFLAGA_PAINTED | GOC_EFLAGA_ENABLE, GOC_WHITE, GOC_HANDLER_SYSTEM ); listaBuduj(lista); goc_sellistSelect(lista, 1); goc_sellistSelect(lista, 4); goc_sellistSelect(lista, 5); lista2 = goc_elementCreate(GOC_ELEMENT_SELLIST, 21, 1, 20, 10, GOC_EFLAGA_PAINTED | GOC_EFLAGA_ENABLE, GOC_WHITE, GOC_HANDLER_SYSTEM ); goc_listAddColumn(lista2, 10); goc_listAddColumn(lista2, 10); listaBudujKolumna(lista2); goc_sellistSelect(lista2, 1); goc_sellistSelect(lista2, 4); goc_sellistSelect(lista2, 5); while (goc_systemCheckMsg( &wiesc )); return 0; }
/* * Odmowa wykonania polecenia, jezeli ustawione dane sa zewnetrzne. */ static int listAddRow(GOC_HANDLER u, GOC_LISTROW *wiersz) { GOC_StList* lista = (GOC_StList*)u; GOC_COLUMN *k = NULL; int i; if ( lista->flag & GOC_LISTFLAG_EXTERNAL ) return GOC_ERR_REFUSE; // jesli nie ma to stworz nowa kolumne if ( lista->nKolumna == 0 ) goc_listAddColumn(u, goc_elementGetWidth(u)); // ustal pozcje na podstawie sortowania lub jako ostatni element if ( wiersz->nRow == -1 ) { if ( lista->flag & GOC_LISTFLAG_SORT ) { k = lista->pKolumna[0]; for (i=0; i<k->nText; i++) { if ( strcmp(wiersz->pText[0], k->pText[i])<0 ) break; } wiersz->nRow = i; } else { wiersz->nRow = lista->pKolumna[0]->nText; } } // czy nie wykracza ponad dodanie if ( wiersz->nRow > lista->pKolumna[0]->nText ) return GOC_ERR_REFUSE; // dodawanie danych wiersza do kolumn for ( i=0; i<lista->nKolumna; i++ ) { k = lista->pKolumna[i]; k->pText = goc_tableInsert(k->pText, &(k->nText), sizeof(char*), wiersz->nRow); if ( i < wiersz->nText ) { k->pText[wiersz->nRow] = goc_stringCopy(NULL, wiersz->pText[i]); } else { k->pText[wiersz->nRow] = NULL; } } return GOC_ERR_OK; // return goc_listAddColumnText(u, tekst, 0); /* GOC_StList* lista = (GOC_StList*)u; char *pBuf = NULL; GOC_COLUMN *kolumna = NULL; if ( lista->flag & GOC_LISTFLAG_EXTERNAL ) return GOC_ERR_REFUSE; if ( lista->nKolumna == 0 ) goc_listAddColumn(u, lista->width); kolumna = lista->pKolumna[0]; pBuf = goc_stringCopy(pBuf, tekst); kolumna->pText = goc_tableAdd( kolumna->pText, &(kolumna->nText), sizeof(char*) ); kolumna->pText[kolumna->nText-1] = pBuf; // goc_systemSendMsg(u, GOC_MSG_PAINT, 0, 0); return GOC_ERR_OK;*/ }