Moin,
also ich weiß nicht was du vor hast, aber sowas geht nicht:
Delphi-Quellcode:
var
x, y : THaus;
begin
x := THaus.Create;
y := x;
x.Free;
y.maleAn(Grün);
Weil sobald du x.Free aufrufst ist auch das Haus y zerstört.
Du hast jetzt folgendes gemacht: Du hast eine Combobox befüllt. Und die Objekte dabei schon freigegeben. Und da man erst nach der Aktion was auswählen kann, sind also alle Objekte bis auf das letzte freigegeben.
Was solltest du anstelle machen? Das habe ich schon gesagt: Mach dir eine TObjectList in der du die Element auch speicherst, und sobald du sie nicht mehr brauchst kannst du sie alle löschen indem du TObjectList.Clear aufrufst (oder die Liste freigibst). Das setzt voraus das OwnObjects auf true steht.
Eventuell kannst du aber auch OwnObjects auf true stellen, von der Liste der ComboBox.
MfG
Fabian
PS: Und falls du glaubst du gibst zu wenig Objekte frei: Schalte doch einfach
ReportMemoryLeaksOnShutdown := true;
.