La propiedad Items del TCheckListBox son de tipo TStrings, por tanto se puede almacenar un puntero al objeto que quieras, imagina algo así:
Código Delphi
[-]
for i:= 0 to Tabla.Fields.count -1 do
begin
CheckListbox.items.AddObject (tabla.[Fields[i].DisplayName, TObject(tabla.Fields[i]));
end;
for i:=0 to checklistbox.items.count-1 do
begin
if checklistbox.checked[i] then
ShowMessage( TField(checklistbox.objects[i]).AsString);
end;
Con checklistbox.Objects, realmente estamos accediendo al campo de la tabla, pero el TStrings solo guarda un TObject, así que hacemos un moldeo de tipos con TField( ....) para decirle a delphi que lo trate como un TField.