Delphi-PRAXiS

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 Element hat kein übergeordnetes Fenster (https://www.delphipraxis.net/69387-element-hat-kein-uebergeordnetes-fenster.html)

F.W. 14. Mai 2006 17:57


Element hat kein übergeordnetes Fenster
 
Hallo allerseits!

Ich hab mal wieder ein neues Problem, habe es schonmal in einem anderen Thread angehängt, aber möchte jetzt nochmal etwas genauer drauf eingehen:

Ich habe mit Delphi eine Dll geschrieben, in dieser ist ein Frame.
In der Dll gibt es zwei Funktionen die von Außerhalb aufgerufen werden sollen:

Delphi-Quellcode:
//Zum Erstellen eines Frame:
function CreateFrame(Parent: TWinControl; Client: TIdTCPClient): TFrame; stdcall; export;
begin
 Frame := TFileSystemFrame.Create(Parent);
 Frame.Parent := Parent;
 Frame.TCPClient := Client;
 Frame.Visible := True;
 Result := Frame;
end;

//Zum Freigeben des Frames:
procedure FreeFrame; stdcall;
begin
 Frame.Free
end;
Mein Programm ruft die Funktion CreateFrame auf und übergibt ihr als Parent ein Panel.
Ich habe einen Frame da klappt alles (da sind nur 3 Buttons und 3 Labels drauf).
Aber jetzt habe ich eine 2. Dll mit wieder dem selben Aufbau (das ganze stellt mein Pluginsystem dar).
Das Problem: Auf der sind (ich weiß nicht ob das was zu sagen hat) unter anderem 2 Listviews und 2 Edits.
Wenn ich auf ein Listview klicke kommt der Fehler "Element 'XYZ' hat kein übergeordnetes Fenster". Das selbe kommt auch wenn ich mit rechts auf eins der Edits klicke (mit Links passiert nichts)
Ich habe mir mal den ClassName vom Parent des jeweiligen Elements XYZ ausgeben lassen, das funktioniert!

Wo liegt mein Fehler? Was kann ich machen?

DGL-luke 14. Mai 2006 18:19

Re: Element hat kein übergeordnetes Fenster
 
Musst du vielleicht noch den Owner zuweisen?

SirThornberry 14. Mai 2006 18:45

Re: Element hat kein übergeordnetes Fenster
 
ich hoffe du verwendest die Unit ShareMem und die Objecte sind in DLL und Hauptprogramm zu 100% identisch

F.W. 14. Mai 2006 19:07

Re: Element hat kein übergeordnetes Fenster
 
Die Unit Sharemem ist die erste eingebundene Unit in den Projektdateien.
Also das Programm und die Dlls sind mit exakt dem selben Delphi (nämlich meinem :D ) compiliert.
Das Hauptprogramm weiß nur, eigentlich garnichts von dem Frame, der Frame nistet sich einfach ein.
Anfangs war CreateFrame noch eine Procedure, die Function, die das T...Frame-Objekt zurückgibt hat auch jetzt noch keine Verwendung.

Edit: @DGL-luke: Ich habe mal in der OH nachgeschaut wofür der Owner ist. Hört sich passend an, aber es ist eine Nur-Lesen-Eigenschaft, ich kann ihr nichts zuweisen.

Weil ich den Frame ja aus der Dll hole, muss ich ihn dann vlt. ansehen wie ein NonVCL Objekt?
Ich weiß nicht was es damit auf sich hat, aber ich habe mal was über die Eigenschaft ParentWindow gelesen...

F.W. 16. Mai 2006 16:34

Re: Element hat kein übergeordnetes Fenster
 
Das Problem ist gelöst! Ich nehme statt einem Frame eine TForm!

Code zum Laden (allgemein):
Delphi-Quellcode:
function CreatePluginForm(AParent: THandle): TForm;
begin
 PluginForm := TPluginForm.CreateParented(AParent);

 with PliginForm do begin
   HandleNeeded;
   BorderStyle := bsNone;
   Align := alClient;
   Show;
 end;
end;
Danke an jensw_2000!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 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