Hallo,
ich verwende zum Anzeigen die TListBox Komponente. Ein Objekt wird mit
lst1.AddItem('String',cont);
zur Listbox (lst1) hinzugefügt. cont ist ein eigens Objekt der Klasse TObject. Meine Frage lautet gibt es bei einer ListBox so etwas wie OwnesObject bei einer TObjectList? Das Problem ist nämlich folgendes: Meiner Meinung erzeugt die Listbox für jedes hinzugefügte Objekt eine Kopie. Wird das ursprüngliche Objekt (cont) an einer anderen Stelle freigegeben, ist es in der Liste noch vorhanden. Nur kann ich es nicht auf der Liste abfragen welchen Zustand es hat (zb. wird das Objekt in der Liste nicht nil, obwohl es freigegeben wurde. Das Objekt selbst ist aber nil und kann dort auch so abgefragt werden).
Für das KeyPress Ereignis habe ich zb. folgenden Code für die Abfrage:
Delphi-Quellcode:
var
obj : TObject;
begin
if key = Char(VK_RETURN) then
begin
obj := lst1.Items.Objects[lst1.ItemIndex];
if obj = nil then
begin
ShowMessage(' obj = nil');
end;
if obj is MyCont then
begin
ShowMessage(MyCont(obj).Value);
end;
end;
end;
Wobei das hinzugefügte Objekt für den Test so
Delphi-Quellcode:
MyCont = class
Value : string;
end;
aussieht. Kurze Zusammenfassung: Objekt einer Listbox wird an einer anderen Stelle gelöscht, wie funktioniert die Abfrage?