Also entweder waren "diese" Items schon immer leer (z.B. andere oder falsche Frame-Instanz oder dein Create nicht ausgeführt), oder das Leeren wurde vorher schon einmal ausgeführt (durch irgendwas ausgelöst *1).
Letzteres würde man mitbekommen, mit einem weiteren Haltepunkt in einem OnChange der Komponente.
Man könnte auch die
VCL debuggen, aber wenn das Löschen nicht über eine Klassenmethode ala Items.Clear, sondern via Message direkt an Windows geht, dann bringt ein Haltepunkt in der
VCL/TComboBox nicht viel.
1) Würde ich aber erstmal ausschließen, denn du scheinst ja keinen anderen Code zu haben, der die Items löscht.
Wenn, dann würde ich eher erwarten, dass bereits die komplette ComboBox gelöscht wurde und nicht nur die Items.
OnChange der ComboBox reagiert aber auf Text/ItemIndex.
Für ein Change-Event des Items müsste man wohl irgendeine Message abfangen.
* entweder ein Hook auf die/mehrere Setter-Message, welche die Items zuweist/löscht
* oder eine Notify-Message (falls es sowas gibt)
Findet man im
MSDN/
PSDK von Windows, wenn man schaut mit welcher Message TComboBox die Items z.B. beim Add an Windows übergibt, und was beim Hersteller dazu steht.
Man könnte auch ein Destroy in seine Datenklasse einfügen, darein einen Haltepunkt und dann schauen von wo die Freigabe her kam.
* entweder in diesem Frame/Combobox gab es nie Items (rausfinden warum nicht)
* oder das wird igentwo "falsch" freigeben (erstmal rausbekommen wo und dann warum)
Aber wenn die Speichelecks deine Klassen-Instanzen sind (sind sie das wirklich? ), dann wurde TTestObject.Destroy ja nicht aufgerufen und ein Haltepunkt dort hilft nichts.