Może to być zwykła tablica dwuwymiarowa:
int Tab[100][2];
gdzie 100 to maksymalna ilość rekordów.
Każdy wiersz tej tabeli ma 2 pola typu int. W pierwszym możesz zapisać ID rekordu, w drugim 1-zaznaczony, 0-niezaznaczony.
Jeśli nie znasz maksymalnej ilości rekordów to poczytaj o tablicach z nieokreślonym rozmiarem.
Inny (chyba prostszy) sposób to utworzyć strukturę:
- Kod: Zaznacz cały
struct SELINFO
{
int id; // id rekordu
bool select; // informacja czy rekord jest zaznaczony
}
Potem tworzysz vektor lub liste (STL) lub obiekt klasy TList. Dla każdego rekordu umieszczasz w nim element typu SELINFO (oczywiście nazwa dowolna).
Sposób trzeci - trochę dziwny ale IMHO najprostszy:
Zrób widoczny globalnie TStrings i zapisuj do niego tylko ID-y tych rekordów które są zaznaczone. Przy odznaczeniu rekordu usuń z TStrings wiersz z właściwym ID-em. Przy zaznaczeniu - dodawaj.
Utworzenie obiektu TStrings:
// w Unit1.h:
TStrings * lista
// w OnCreate
lista = new TStringList();
// w OnDestroy
delete lista;
// dodanie wiersza
lista->Add(IntToStr(id))
// sprawdzenie czy na liście jest wiersz z danym ID:
lista->IndexOf(IntToStr(id)); // zwraca indeks wiersza z ID lub '-1' jeśli nie ma wiersza
// usunięcie wiersza zawierającego ID:
int idx = lista->IndexOf(IntToStr(id));
if ( idx > -1 )
lista->Delete(idx);
Prawda że proste?