AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Fehlermeldung "Element hat kein übergeördnetes Fenster"
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung "Element hat kein übergeördnetes Fenster"

Ein Thema von DevidEspenschied · begonnen am 18. Feb 2009 · letzter Beitrag vom 23. Feb 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#1

Fehlermeldung "Element hat kein übergeördnetes Fenster&

  Alt 18. Feb 2009, 11:35
Ich verzweifle hier nochmal mit meiner Thread-Beispielapplikation.

Dafür habe ich ein Hauptformular mit 2 Schaltern erstellt, wobei der erste Schalter testweise ein leeres Formular öffnet. Der 2. Schalter öffnet ein Thread-Formular, in dem sich 3 Memofelder sowie ein Abbruch-Schalter befinden. Zu jedem der 3 Memos gehört ein Thread, der die Memos mit Zufallszahlen befüllt. Das funktioniert soweit ganz gut.

Der Abbruch-Schalter beendet die 3 Threads jeweils mit ihren Terminate-Funktionen und ruft ein Close auf, um das Fenster zu schließen und wieder zum Hauptformular zu gelangen. Leider resultiert daraus immer wieder die Fehlermeldung "Element hat kein übergeördnetes Fenster" (siehe auch Screenshot).

Ich habe irgendwas davon gelesen, dass man Create oder CreateWnd überschreiben muss und ein Parent zuweisen muss. Damit hatte ich allerdings keinen Erfolg. Ich bilde mir aber ein, dass es etwas mit den Threads zu tun haben muss, da das erste Testfenster ja fehlerfrei geschlossen werden kann.

Woran kann das liegen ? Notfalls kann ich die Beispielapplikation einmal hochladen.
Miniaturansicht angehängter Grafiken
delphierror_124.jpg  
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 11:39
erst mal eine Frage: du erstellst VCL-Fenster innerhalb der Thread's, oder hab ich das falsch verstanden?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#3

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 11:42
Zitat von himitsu:
erst mal eine Frage: du erstellst VCL-Fenster innerhalb der Thread's, oder hab ich das falsch verstanden?
Ne, die Threads beschreiben nur die Memo-Felder und verwenden dafür die Thread-Synchronize-Funktionen. In der FormActivate-Funktion des Formulars werden die Threads erzeugt sowie gestartet und mit dem Abbrechen-Schalter via Terminate beendet.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
113 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 11:53
Passiert das Ganze auch, wenn du die Threads ganz weglässt?
Also nur beim Schließen des Fensters?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 11:57
OK, dann hab ich das wohl wirklich falsch verstanden
Also wird da wohl nicht das Problem liegen

Passieren kann nichts, wenn das Fenster schon weg ist und z.B. einer der Threads noch versucht darauf zuzugreifen?
Die Threads werden ja nicht sofort du .Terminate beendet, sondern laufen noch etwas weiter (bis sie da ankommen wo sie selbst .Terminated prüfen und sich beenden).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#6

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 11:58
Sobald ich die Threads rausnehme, öffnet und schließt das Fenster ohne Probleme.

Ich habe einmal die Beispielapplikation angehängt, um einen besseren Eindruck von der Situation zu geben.
Angehängte Dateien
Dateityp: zip threaddemo_207.zip (239,3 KB, 8x aufgerufen)
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 12:03
Ich habe nur das Kompilat gestartet. Bei mir tritt kein Fehler auf (XP SP 3).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 12:09
wie gesagt, DoThread wird noch aufgerufen, nachdem das Fenster schon weg ist ... und dort entsteht auch die Exception.

PS:
das ist schon "kraß"
while (true) and (Terminated = false) do (true) ?
ja und dann wird es hier auch immer wieder gesagt: prüfe nicht auf True und False
while not Terminated do @DeddyH: selbes System, aber ich hab Fehler (im Debugger gestartet)


[add]
also entweder prüfst du in .DoThread ob das das Fenster noch existiert und greifst dann nicht darauf zu,

oder die einfach Lösung für diesen Fall:
Delphi-Quellcode:
procedure TThreadForm1.Button1Click(Sender: TObject);
begin
  Th1.Terminate;
  Th2.Terminate;
  Th3.Terminate;
                                //while not (alle_threads_beendet) do begin
  Sleep(100); // Sleep(10);
  Application.ProcessMessages; // Application.ProcessMessages;
                                //end;
  Close;
end;
hier würde sich dann aber eine Schleife besser eignen, welche vor Close; drauf wartet, daß alle Thread beendet wurden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#9

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 12:09
Tatsächlich, der Fehler tritt nur in der Delphi-IDE auf. Kannst Du das auch bestätigen ?

Ich verwende Delphi 2007 Pro mit allen Updates.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#10

Re: Fehlermeldung "Element hat kein übergeördnetes Fens

  Alt 18. Feb 2009, 12:11
Ich hab auf der Arbeit nur Delphi 5 zur Verfügung, daher kann ich das nicht ausprobieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 06:28 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