Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Jedi-VCL Fehler: kein übergeordnetes Fenster (https://www.delphipraxis.net/51319-jedi-vcl-fehler-kein-uebergeordnetes-fenster.html)

meierotto 10. Aug 2005 12:42


Jedi-VCL Fehler: kein übergeordnetes Fenster
 
Ich habe folgendes Problem :wall: :

Wenn ich eine Jedi-Komponente (z.B. JvMemo) auf ein Form platziere erhalte ich zur Laufzeit beim Beenden/Zerstören des Programmes die Exception EInvalidOperation mit der Meldung: Element 'JvElement' hat kein übergeordnetes Fenster.

Kennt jemand dieses Problem und vor allem weiß jemand eine Lösung? :gruebel:

[edit=sakura] Jedi->Jedi-VCL; zur Verdeutlichung angepasst. Mfg, sakura[/edit]

shmia 10. Aug 2005 12:53

Re: Jedi Fehler: kein übergeordnetes Fenster
 
Zitat:

Zitat von meierotto
Wenn ich eine Jedi-Komponente (z.B. JvMemo) auf ein Form platziere erhalte ich zur Laufzeit beim Beenden/Zerstören des Programmes die Exception EInvalidOperation mit der Meldung: Element 'JvElement' hat kein übergeordnetes Fenster.

Du musst beim Erzeugen folgendes beachten:
Delphi-Quellcode:
   // der Owner der Komponente muss das Formular sein, damit
   // beim Zerstören des Formulars das Memo automatisch mitzerstört wird
   tmpMemo := TJvMemo.Create(self);
   tmpMemo.left := ...
   ....
   // den Owner zuweisen
   // das muss nicht das Formular sein, sondern ein Control, dass SubControls akzeptiert
   tmpMemo.Parent := Panel17;

meierotto 10. Aug 2005 13:36

Re: Jedi Fehler: kein übergeordnetes Fenster
 
Danke shmia,

aber leider ist es das nicht.
Erstens gehe ich davon aus, wenn ich ein Objekt auf dem Form platziere, das die Parentzuweisung damit geklärt ist.
Zum anderen, selbst wenn ich nachträglich z.B. das Formular als Parent zuweise
Delphi-Quellcode:
mem.Parent:=FrmLnwBearbeiten;
kommt immer noch der gleiche Fehler.

Übrigens passiert das nicht bei allen Jedi-Komponenten, JvSpinEdit funktioniert zum Beispiel
:shock:

generic 10. Aug 2005 13:45

Re: Jedi Fehler: kein übergeordnetes Fenster
 
ein ähnliches problem hab ich mit dem virtualstringtree von mike lischke.
in den projekten arbeite ich mit mdi-formularen.

vieleicht gibt es gemeinsamkeiten und ein bug in der vcl?

meierotto 10. Aug 2005 14:09

Re: Jedi Fehler: kein übergeordnetes Fenster
 
Mmh, auch das hilft nicht weiter, meins ist keine MDI-Anwendung.

Trotzdem Danke

shmia 10. Aug 2005 14:35

Re: Jedi Fehler: kein übergeordnetes Fenster
 
Zitat:

Zitat von meierotto
Danke shmia,

aber leider ist es das nicht.
Erstens gehe ich davon aus, wenn ich ein Objekt auf dem Form platziere, das die Parentzuweisung damit geklärt ist.

Ich dachte du würdest das Control zur Laufzeit erzeugen. (Miss Verständnis)
Du hast ja den Sourcecode zu dem fehlerhaften Control. ;-)
Dann kannst du ja mal nachschauen, was im Destruktor Destroy noch so alles passiert.
Im Destruktor darf dann keinerlei Zugriff mehr auf den Parent stattfinden, da der Parent ja gerade auch zerstört wird!!
Man darf im Destruktor nur eigene Resourcen freigeben und muss aber damit rechnen, dass diese Resourcen unvollständig erzeugt wurden.
Man darf auch nicht auf Dinge zugreifen, die vom Parent abstammen und zwischengespeichert wurde (z.B. ein Handle).

Ebenfalls sollte man die Procedure Notification überprüfen (falls diese in der Komponente überschrieben wurde).

jbg 10. Aug 2005 16:52

Re: Jedi-VCL Fehler: kein übergeordnetes Fenster
 
Du hast wohl MaxLines > 0 gesetzt. Da habe ich gerade einen Fehler im Destruktor entdeckt. Jetzt muss ich erstmal schauen warum der Fehlerhafte Code da ist.

jbg 10. Aug 2005 16:56

Re: Jedi-VCL Fehler: kein übergeordnetes Fenster
 
Der Code
Delphi-Quellcode:
if MaxLines > 0 then
  Lines.Assign(FOrgLines);
muss weg. Der ist an der Stelle völlig unnötig, da das Control zu diesem Zeitpunkt nicht mehr existent ist.
Bugfix ist auch im CVS.

meierotto 30. Aug 2005 08:15

Re: Jedi-VCL Fehler: kein übergeordnetes Fenster
 
Vielen Dank jbg :-D ,

da ich mich in letzter Zeit erholt und Urlaub gemacht habe :sharkylinchen: , kann ich erst jetzt reagieren.
Ich werde den Destruktor gleich anpassen. Das gleiche Problem habe ich übrigens mit der Assistenten-Komponente, ich werde mal nachsehen, ob ich auch dort den Destruktor modifizieren muss.

Wie funktioniert das eigentlich mit dem CVS? :gruebel:

jbg 30. Aug 2005 09:44

Re: Jedi-VCL Fehler: kein übergeordnetes Fenster
 
Zitat:

Zitat von meierotto
Das gleiche Problem habe ich übrigens mit der Assistenten-Komponente, ich werde mal nachsehen, ob ich auch dort den Destruktor modifizieren muss.

Mich würde mehr interessieren, welche Eigenschaften du umgestellt hast, so dass der Fehler auftritt. Denn bei mir (und dem JVCL Installer) funktioniert der JvWizard ohne Probleme.

Zitat:

Wie funktioniert das eigentlich mit dem CVS? :gruebel:
Lesen oder Schreiben?

Lesen:
1. TortoiseCVS installieren
2. Und dann Rechtklick im Explorer und auf "CVS Auschecken" klicken
3. Bei CVSROOT ":pserver:anonymous@cvs.sourceforge.net:/cvsroot/jvcl" eintragen
4. Bei Modul "dev/JVCL3" eintragen und OK.
Jetzt zieht er den gesamten JVCL3 Quellcode aus dem CVS und man kann mit rechtslick "CVS Lokal aktualisieren" / "CVS Update" auf dem aktuellen Stand bleiben und mit makemodified.bat die Änderungen übernehmen. Man braucht dabei aber auch immer eine aktuelle JCL (:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jcl - Modul: jcl)

Schreiben
Das dürfen nur JVCL Entwickler. Und das kann man nur durch öftere Contributions und/oder Bugfixes werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Seite 1 von 2  1 2      

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