Einzelnen Beitrag anzeigen

IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Combobox mit AddObject - Speicher automatisch freigeben

  Alt 20. Feb 2007, 11:07
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.
  Mit Zitat antworten Zitat