Trenne Daten und
GUI. Halte dir eine TStringList, diese hat ein OnChange Event für solche Events. Jeder Code der bisher deine ListBox angesprochen hat für die Items (add, delete, etc) sollte nun die TStringList nutzen. Im OnChange kannst du dann die aktuelle Liste einer ListBox zum anzeigen übertragen:
ListBox1.Items.Assign(DeineTStringList);
. Zusätzlich kannst du auf deine Änderungen reagieren.