![]() |
Re: TObjectList: AV wenn OwnsObject := True
Du musst das schon mit diesem TImageEnVect versuchen, alles andere hat keinen Sinn :roll:
|
Re: TObjectList: AV wenn OwnsObject := True
Zitat:
Am einfachsten ist es, wenn Du eine Liste von TComponentList ableitest, sagen wir mal TControlList. In dieser musst Du nur den Destruktor überschreiben und für alle Kinder vor dem Aufruf des geerbten Konstruktors dann etwas aufrufen wie:
Delphi-Quellcode:
Ach ja, natürlich darfst Du dann auch nur TControl-Instanzen einfügen.
var i: Integer;
begin if self.OwnsObjects and (self.Count > 0) then begin for i := 0 to self.Count - 1 do begin self[i].Parent.RemoveControl(self[i]); end; end; inherited destroy; end; |
Re: TObjectList: AV wenn OwnsObject := True
Zitat:
Edit: jetzt wo ich die Kompos schon hab kannst des ding au ma schicken oder? |
Re: TObjectList: AV wenn OwnsObject := True
Hallo Leute,
ich habe jetzt noch einmal mit TComponentList und Delphi 6 getestet. Beliebig viele TImage-Komponenten (Owner=nil) werden dynamisch erzeugt und auf einem Panel abgelegt, zusätzlich werden Referenzen auf die TImages in einer TComponentList (OwnsObjects=True) gespeichert. Nach dem Zerstören des Panels und der damit verbundenen automatischen Freigabe der TImages enthält die TObjectList keine Elemente mehr. Beim Freigeben der Form kann somit in deren OnDestroy-Handler die Liste ohne Probleme freigegeben werden. Auch das Freigeben der Liste zur Laufzeit funktioniert, die TImages werden dann automatisch vom Panel entfernt. Das alles funktioniert ohne Änderung an der TComponentList. Der Fehler muß meiner Meinung nach im restlichen Code zu suchen sein - vielleicht in der Komponente TImageEnVect, wie Die Muhkuh ja in Beitrag #14 schon angedeutet hat. Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz