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