Der zu suchende String soll aber in der Listbox stehen, oder? Dann wäre es
IMHO das Einfachste, die Listbox.Items in einer Schleife (rückwärts!) zu durchlaufen und die Items zu löschen, die den Suchstring nicht enthalten.
Delphi-Quellcode:
for i := Pred(ListBox.Items.Count) downto 0 do
//möglicherweise habe ich jetzt die Parameter vertauscht, einfach mal in der Hilfe nachsehen
if not StrUtils.AnsiContainsText(Suchstring,ListBox.Items[i]) then
ListBox.Items.Delete(i);