Hola Impadron.
Realmente no había entendido bién lo que estabas buscando hacer, ahora creo que sí...
A ver si estoy en lo cierto, a medida que te desplazas por la tabla los items del CheckListBox deben poner su propiedad Checked a true o false según existan o nó en el campo "norma".
De ser así se puede simplificar a una sola función:
Código:
void __fastcall TForm1::ADOQuery1AfterScroll(TDataSet *DataSet)
{
TStringList *TS= new TStringList;
__try {
TS->Delimiter = '-';
TS->DelimitedText = ADOQuery1->FieldByName("norma")->Text;
for(int i = 0; i < CheckListBox1->Count; i++){
CheckListBox1->Checked[i] = TS->IndexOf(CheckListBox1->Items->Strings[i]) != -1;
}
}
__finally {
delete(TS);
}
}
Saludos.