Man könnte auch das ganz über eine TObjectList realisieren. Die Objecte stellen die benötigten Properties z.B. Caption, InitialItem, etc bereit.
Delphi-Quellcode:
TBeispiel=class(
property caption: String;
property IntialItem: Boolean;
);
TBeispielList=class(TObjectList<TBeispiel>);
Mittels Listbox.items.addobject(BeispielList[i].caption, BeispielList[i]) werden die objecte an die Listbox gebunden.
Ich würde mir dann immer das passenden Object holen
TBeispiel(Listbox.items.object[ListBox.ItemIndex])
und mit denen arbeiten. Anschließend die Listbox bei Veränderungen neu aufbauen.