Wozu das Self im AddObject? (und auch noch unnötig nach TObject gekastet)
Die Windows-Komponente kennt eh keine Objekte ... dort ist das "Objekt" eigentlich "Data" und das ist ein dummer Pointer/Integer.
Fazit:
* Caste einfach deinen Integer nach TObject (nimm besser gleich NativeInt anstatt Integer, damit es eventuell irgendann unter 64 Bit nicht rumzickt)
* beim Lesen einfach den Integer wieder aus Objects lesen
* * also quasi ganz einfach nur AddIdItem zu Items.AddObject und ID[] zu Items.Objects casten/weiterleiten
* und das Ganze Zeugs mit der zusätzlichen Liste sein lassen.
Alternativ ein DataObjekt erstellen, das an Objects übergeben (und nicht vergessen das wieder freizugeben, denn da es in Wirklichkeit keine Objekt-Zeiger sind und Delphi/
VCL diese "Objekte" auch nicht aufräumt ... mußt du das machen)
Ansonsten hast Spaß eben, wenn du Items löschst, verschiebst/sortierst, was Insert
est usw.,
weil du nicht auf das OnChange reagierst und deine interne Liste damit abgleichst.
TComboBox und TListBox sind das Selbe. (ich glaub TRadioGroupBox auch)
Achtung, bei TMemo gibt es auch ein Objekts, aber das wird intern nirgendwo gespeichert (und natürlich hat Delphi/
VCL vergessen dort eine
Exception einzubauen, falls man es dennoch versucht)
Delphi 6?
Wenn aktueller, dann kannst dir die Ableitung/Registrierung sparen,
erstellst einfach einen ClassHelper und hast das Verhalten direkt an jeder normalen TComboBox verfügbar.
(in D6 kann man aber auch "gleichnamig" ableiten und muß nicht registrieren, da der Speicher der Klasse unverändert bleibt)
community edition