Zitat von
backdraft:
Delphi-Quellcode:
destructor TCustomImageComboBox.Destroy;
var i : Integer;
begin
FOR i := 0 TO FFItems.Count - 1 DO BEGIN // <=== doppeltes F ??
IF FItems.Objects[i] <> nil THEN FItems.Objects[i].Free;
END;
inherited;
end;
Das doppelte F ist keine Absicht, oder?
Wie sieht deine Klasse TCustomImageBox denn aus? Wovon leitest du ab?
Bei meinem Test habe ich mal direkt von TComboBox abgeleitet:
Delphi-Quellcode:
type
...
TCombo = class(TComboBox)
public
destructor destroy; override;
end;
var
Combo: TCombo;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
...
Combo := TCombo.Create(Form1);
Combo.Name:='Combo';
Combo.Parent:=self;
Combo.Left := 448;
Combo.Top := 64;
Combo.Width := 145;
Combo.Height := 21;
Combo.ItemHeight := 13;
Combo.Clear;
Combo.Items.AddObject('Label',self.Label1); //Testobject ist Label1 auf Form1
end;
destructor TCombo.destroy;
var i : integer;
begin
for i := 0 to Combo.Items.Count-1 do
begin
Combo.Items.Objects[0].free;
end;
inherited;
end;
Wenn ich irgendwo im Programm ein Combo.Free habe, so funktioniert das einwandfrei. In meinem Beispiel verschwindet das Label1 von der Form.