Die ListBox selber bietet keine direkten Notification hierfür, drum hat die TListBox auch kein Event.
https://docs.microsoft.com/en-us/win...-notifications
Wenn/da die ListBox ausschließlich vom eigenen Programm (Delphi) geändert wird, könntest du dich in ListBox.Items reinhängen, was ein TStrings-Nachfahre ist (quasi eine TStringList).
Bei einer ComboBox ist diese Instanz schön gekapselt und lässt sich über eine überschreibbare GetItemsClass leicht austauschen,
aber bei der ListBox ist das leider echt bescheiden implementiert und es wird nicht leicht den Constructor und darin das TListBoxStrings.Create zu ersetzen, um dort die Methoden Insert und Delete zu überschreiben und das neue Event auszulösen.
Bliebe also noch auf Messages zu lauschen.
CB_ADDSTRING und WM_DELETEITEM, wobei Bearbeiten/Ändern über Delete+Insert behandelt wird, also nur Add und Delete zu beachten sind.
Da diese Messages aber über SendMessage laufen, hilft TApplicationEvents.OnMessage nicht, da dort nur PostMessage ankommt und auch nur, wenn es über die MainLoop der
VCL eintrudelt. (ist grade eine andere Message-Behandlung aktiv, wie z.B. im
MessageBox, dann geht OnMessage garnicht)
Somit läuft es hier wohl eher auf einen MessageHook hinaus.
Oder eben sich das Event selbst zu implementieren, bei seiner (einen) eigenen ListBox-Befüll-Prozedur.