![]() |
Element hat kein übergeordnetes Fenster
Hallo allerseits!
Ich hab mal wieder ein neues Problem, habe es schonmal in einem ![]() 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:
Mein Programm ruft die Funktion CreateFrame auf und übergibt ihr als Parent ein Panel.
//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; 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? |
Re: Element hat kein übergeordnetes Fenster
Musst du vielleicht noch den Owner zuweisen?
|
Re: Element hat kein übergeordnetes Fenster
ich hoffe du verwendest die Unit ShareMem und die Objecte sind in DLL und Hauptprogramm zu 100% identisch
|
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... |
Re: Element hat kein übergeordnetes Fenster
Das Problem ist gelöst! Ich nehme statt einem Frame eine TForm!
Code zum Laden (allgemein):
Delphi-Quellcode:
Danke an jensw_2000!!
function CreatePluginForm(AParent: THandle): TForm;
begin PluginForm := TPluginForm.CreateParented(AParent); with PliginForm do begin HandleNeeded; BorderStyle := bsNone; Align := alClient; Show; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz