Einzelnen Beitrag anzeigen

Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#1

Löscht TComboBox.Items.Clear auch Objekte?

  Alt 11. Jun 2009, 08:39
Hallo zusammen,

in einer Applikation existieren max. 40 feste und 10 frei vom Anwender eingebbare Einheiten. Zu erwähnen ist, dass bislang nur ca. 20 fixe Einheiten existieren und die Liste auch Lücken aufweisen kann. Alle Einheiten sollen jedoch in einer TComboBox dargestellt werden.
Nun besteht allerdings die "Gefahr", dass der Anwender bei den frei eingebbaren Einheiten eine Einheit eingibt, die bereits bei den festen Einheiten vorhanden ist, doch dies soll möglich sein (über Sinn und Unsinn darüber will ich nicht sprechen).
Damit ich jedoch nun in der ComboBox unterscheiden kann, ob es sich bei der selektierten Einheit um eine feste oder freie Einheit handelt, habe ich die TComboBox analog diesem Beispiel um AddObject erweitert ala
Delphi-Quellcode:
const
  FIXEINHEITEN = 40;
  FREIEINHEITEN = 10;

for x:= 1 to FIXEINHEITEN do
begin
  if (Length({Bezeichnung fixe Einheit}) > 0)
    ComboBox.Items.AddObject({Bezeichnung fixe Einheit}, TObject(x));
end;

for x:= 1 to FREIEINHEITEN do
begin
  if (Length({Bezeichnung freie Einheit}) > 0) then
  ComboBox.Items.AddObject({Bezeichnung freie Einheit}, TObject(x+FIXEINHEITEN));
Die in der ComboBox selektierte Einheit ermittle ich über
Delphi-Quellcode:
var Idx: integer;
Idx:= Integer (ComboBox.Items.Objects[ComboBox.ItemIndex]);
und wenn Idx > FIXEINHEITEN ist, weiß ich, dass die selektierte Einheit eine selbstdefinierte Einheit ist.

Zurück zum Betreff:
Da, wie geschrieben, der Anwender auch selbst definierte Einheiten eingeben bzw. verändern kann, schmeiße ich nach einer Veränderung erstmal alle Einträge in der ComboBox mit
ComboBox.Items.Clear; weg.
Frage: Schmeißt die Clear-Routine auch die Objekte weg oder entsteht da wohlmöglich ein Speicherleck?
Eine TComboBox.Items.DeleteObject od. ähnl. existiert ja nicht...

Dank vorab und Gruß, Carsten
  Mit Zitat antworten Zitat