AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TObjectList als Owner von Controls?

Ein Thema von messie · begonnen am 19. Feb 2012 · letzter Beitrag vom 19. Feb 2012
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

TObjectList als Owner von Controls?

  Alt 19. Feb 2012, 19:55
Moin,

ich horte einige meiner GUI-Controls zusammen mit deren Methoden und Properties in TObjectlists.
Zur Anzeige habe ich bisher eigene Fenster gehabt, die als Parent und Owner zugewiesen wurden und die nach der Übergabe der Parameter und dem Schließen des Fensters nil gesetzt wurden. Jetzt bin ich am basteln eines Ribbon-Fensters und möchte das Prinzip gerne beibehalten. Klappt aber nicht, weil ein Teil der Controls im Fenster kleben bleibt und nicht mit der TObjectList stirbt.

Daher die Frage: könnte man die TObjectList als Owner angeben und die grafische Kompo als Parent? Dann könnte ich das sauber aufräumen, ohne die einzelnen Controls jedesmal prüfen zu müssen, ob sie nun zum Fenster oder zur TObjectList gehören.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.352 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TObjectList als Owner von Controls?

  Alt 19. Feb 2012, 19:57
Erzeuge die TObjectList einfach mit dem Parameter True, dann gibt diese die Objekte selbst wieder frei, wenn sie aus der Liste entfernt werden (auch bei Zerstörung der Liste).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#3

AW: TObjectList als Owner von Controls?

  Alt 19. Feb 2012, 20:21
Hmm, das geht auch noch nicht, vielleicht liegt es auch an mir. Ich habe einen constructor, da setze ich "OwnsObjects" auf true. Das hilft aber nicht.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.352 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TObjectList als Owner von Controls?

  Alt 19. Feb 2012, 21:51
Die Objekte in der TObjectList werden definitiv freigegeben. Das Problem muss woanders liegen...
Vielleicht sind die betreffenden Objekte doch nicht in der Liste oder so.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: TObjectList als Owner von Controls?

  Alt 19. Feb 2012, 23:05
Der Owner von einem TComponent muß vom Typ TComponent sein, und eine TList (davon wird TObjectList abgeleitet) wird nicht von TComponent abgeleitet, somit kann man also so eine Liste nicht als Owner übergeben.

Aber wozu auch?

Wozu wird denn bei TComponent ein Owner übergeben? Eben, weil man die Kontrolle über den Lebenszyklus an eben diesen Owner delegiert.

Sollen diese Komponente nun mit einer TObjectList (OwnsObjects=True) verwaltet werden, dann übergibt man die Komponente eben dieser TObjectList und fertig ist. Die Delegation ist damit erfolgt. Allerdings gibt man beim Erzeugen als Owner eben nil an. Sonst delegiert man ja doppelt.

Die Eigenschaft Parent gibt nur an, wo die Komponente gezeichnet werden soll. Und diese Eigenschaft hat nichts mit dem Owner zu tun. Die können durchaus gleich sein ... müssen aber nicht.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz