AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Fehlermeldung: [Objekt] hat kein übergeordnetes Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung: [Objekt] hat kein übergeordnetes Fenster

Ein Thema von Pfoto · begonnen am 12. Feb 2008 · letzter Beitrag vom 12. Feb 2008
Antwort Antwort
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Fehlermeldung: [Objekt] hat kein übergeordnetes Fenster

  Alt 12. Feb 2008, 12:33
Hallo zusammen!

ich habe hier einen Nachfahren einer TListbox, der mit AddObject
hinzugefügte Objekte selbst verwaltet (ähnlich wie TObjectList).

Das Problem:
Im Destroy-Bereich (der natürlich überschrieben wurde), möchte
ich alle Objekte freigeben:
Delphi-Quellcode:
destructor TAdvEditListBox.Destroy;
var
  i: integer;
begin
  If fOwnsObjects then
    for i:= 0 to Items.Count-1 do
      If assigned(Items.Objects[i]) then
        TObject(Items.Objects[i]).free;

  inherited;
end;
Es kommt jedoch die Fehlermeldung:
"[Objekt] hat kein übergeordnetes Fenster".

Aber was haben die Items der noch nicht zerstörten Listbox
mit einem übergeordneten Fenster zu tun?

Oder wird vielleicht die Listbox schon vor der Methode
"Destroy" über "DestroyWnd" zerstört? Ich sehe aber
gar keinen Aufruf von "DestroyWnd" vor "Destroy"

Merkwürdigerweise wird "DestroyWnd" sogar ganz zu Beginn
bei Erstellung der Komponente aufgerufen...


Wäre toll, wenn mir hier einer zum Durchblick verhilft!

Dank und Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Fehlermeldung: [Objekt] hat kein übergeordnetes Fenster

  Alt 12. Feb 2008, 12:38
die Frage wäre: Ist der Parent deiner TObject(e) auf die Listbox gesetzt? Dann kümmert sich nämlich der Parent um das Destroy(en) und du würdest es ein zweites Mal tun!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Fehlermeldung: [Objekt] hat kein übergeordnetes Fenster

  Alt 12. Feb 2008, 13:26
Wenn ich mich recht entsinne, kann ich doch den "normalen"
TStrings, die der TListbox angehören, nur Objekte ohne Parent
zuweisen, d.h. ich bin _immer_ für deren Freigabe zuständig.

Die Items selbst werden erst im anschließenden Destroy
des Vorfahrens gelöscht, wie ich gesehen habe.


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Fehlermeldung: [Objekt] hat kein übergeordnetes Fenster

  Alt 12. Feb 2008, 13:31
nein,

TListBox.AddItem('mein Text',Edit1); klappt reibungslos!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Fehlermeldung: [Objekt] hat kein übergeordnetes Fenster

  Alt 12. Feb 2008, 13:43
Die AddItem-Methode gibt aber leider auch nichts automatisch wieder frei,
wie ich eben nachgelesen haben:

Aus der Hilfe:
Zitat:
Beschreibung
AddItem fügt einen Eintrag an das Ende der Liste ein und ordnet ihn ggf. einem angegebenen Objekt zu.

Item ist der Text, der den Wert des Eintrags darstellt. Dieser String wird im Listenfeld angezeigt.

AObject ist ein Objekt, das Sie dem Eintrag zuordnen können. Das Listenfeld wird nicht zum Eigentümer dieses Objekts. Das Objekt wird also nicht automatisch freigegeben, wenn der Eintrag gelöscht wird.
Schade, dass es wirklich nicht schon längst eine Listbox
seitens Delphi gibt, die sowas von alleine managed.

Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Fehlermeldung: [Objekt] hat kein übergeordnetes Fenster

  Alt 12. Feb 2008, 13:50
dann packe alle Objecte zusätzlich in eine TObjectList, die managed dies von alleine
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  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 17:20 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