Delphi-Quellcode:
ContactForm.ContactList := ContactCollection;
ContactForm.CurrentContactIndex := lbContacts.ItemIndex;
Der Index in der Original-Collection stimmt garantiert nicht mehr, wenn die Collection gefiltert ist. Du musst Ihn über IndexOf() (falls vorhanden) neu bestimmen.

Oder du speicherst beim Filtern im Objekt des Listeintrages nur den Original-Index ab, damit könntest Du das auch lösen.