Einzelnen Beitrag anzeigen

martin_

Registriert seit: 19. Mai 2008
Ort: Österreich
89 Beiträge
 
#1

TListBox Objekte löschen

  Alt 20. Okt 2009, 11:58
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?
  Mit Zitat antworten Zitat