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 "Frame" aus DLL in Dialog einbetten (https://www.delphipraxis.net/65001-frame-aus-dll-dialog-einbetten.html)

eyeless 10. Mär 2006 22:55


"Frame" aus DLL in Dialog einbetten
 
Hallo,

ich würde gern mal wissen, ob folgendes geht und wenn ja, wie:

Ich habe jez mal ein Hauptprogramm, dass nun die einzelnen dlls (als sone Art plugins oder so ...) laden kann, in denen sich wiederum Panels/Frames/wasweissich befinden, die ich dann auf ein Panel/TabSet/wieauchimmer betten lasssen und die ich dann auch janz normal nutzen kann ...

Ich will damit ein Programm bauen, dass Module laden und mit ihnen arbeiten kann usw. ... oder geht das anders besser?

Geht das? Wenn JAR, VIEH????

mfg, eyeless

PS: DF-Link zum Thema

eyeless 12. Mär 2006 18:08

Re: "Frame" aus DLL in Dialog einbetten
 
*push*

Kann mir wirklich keiner helfen?

mfg, eyeless

chaosben 13. Mär 2006 05:52

Re: "Frame" aus DLL in Dialog einbetten
 
Ja, das kann man machen. Threads über die Verwendung von DLL's gibts ja genug.
Nur gibt es da ein Problem. Du kannst dir natürlich von deinem Plugin einen Pointer auf eine Panel geben lassen, welches du in der DLL erzeugt hast. Aber, alle normalen Zugriffe auf Eigenschaften, die Objekte sind (also keine einfachen Typen) werden zu Zugriffsverletzungen führen. Das kommt daher, das Objekte innerhalb der VCL als ID's abgelegt werden. Diese ID's gelten aber immer nur innerhalb einer laufenden VCL-Instanz. Das nur als Warnung.

Btw.: Man könnte für obiges Problem mal ein Framework schreiben was dies behebt.

Elvis 13. Mär 2006 08:06

Re: "Frame" aus DLL in Dialog einbetten
 
Wie in jedem Thread dieser Art in dem ich bisher das Vergnügen (*cough, cough*) hatte das gleiche zu antworten, werde ich auch hier das gleiche wie immer antworten:
Schaue dir mal Packages an, DLLs machen nur Sinn wenn du kompatibel zu anderen Sprachen sein willst. DAs was du da machst schließt diese Kompatibilität komplett aus -> also Packages.

F.W. 13. Mai 2006 22:41

Re: "Frame" aus DLL in Dialog einbetten
 
Ich benutze auch Frames aus Dlls als "Plugins".

Ich habe schon das erste Problem überwunden: Beim Laden des Frames kam immer der Fehler "TFont kann nicht TFont zugewiesen werden"
Das habe ich abgeschafft indem ich ParentFont beim Frame auf False gesetzt habe.

Dann klappte alles soweit, aber jetzt habe ich ein ListView auf dem Frame platziert, wenn ich den anklicke wenn der Frame in die Anwendung geladen ist, kommt ein Fehler "Element 'XYZ' hat kein übergeordnetes Fenster"

Der Parent vom Frame wird beim Laden auf ein Panel gesetzt (beim Create wird der Parent mit NIL angegeben, er wird manuell später gesetzt, daran liegts aber nicht!)

Was kann ich da tun?

chaosben 15. Mai 2006 06:32

Re: "Frame" aus DLL in Dialog einbetten
 
Du könntest das oben angedeutete Framework nutzen. (Disclaimer: Einige der hier versammelten Delphi-Koryphäen meinen, das dies ein "Hack", "unterminierender Code", "dem DLL-Prinzip defakto widersprüchlicher Code" usw. ist. Was auch immer: er funktioniert. :) )

F.W. 15. Mai 2006 10:42

Re: "Frame" aus DLL in Dialog einbetten
 
Von dem Framework-Thread:
Zitat:

Oft gibt es ja Diskussionen darüber, warum man von einer DLL nicht auf die Komponenten des aufrufenden Programms zugreifen kann
Aber eigentlich will ich ja nicht von der Dll auf das Programm zugreifen.
Der Dll-Frame wird auf ein Panel im Programm geladen, ansonsten dreht er total sein eigenes Ding.
Die Controls auf ihm bearbeiten nur Eigenschaften und Controls auf sich selbst.
Die einzige Komponente, die vom Hauptprogramm gestellt wird, ist ein IdTCPClient.
Aber in der neuen Dll habe ich den TCPClient noch garnicht benutzt.

Edit: Oh, das ist ja ein anderer Thread, tut mir Leid, ich habe meine Frage nochmal konkreter in einem anderen Thread gestellt!

chaosben 15. Mai 2006 10:57

Re: "Frame" aus DLL in Dialog einbetten
 
Sorry, da hab ich wohl ein wenig an dir vorbei gelesen. :)

Wie erzeugst du denn dein Frame?
Ich hab hier auf Arbeit ein Programm am Start, das scheinbar ähnlich aufgebaut ist wie das deine. Da musste ich aber den Parent extra per Hand zuweisen. Also CreateParented und Windows.SetParent(bli,bla)

F.W. 15. Mai 2006 11:05

Re: "Frame" aus DLL in Dialog einbetten
 
@chaosben: Tut mir Leid, ich habe meinen Thread nochmal bearbeitet. Ich war durcheinander gekommen ^^
In dem oben genannten Thread steht, wie ich den Frame erzeuge.

Aber ich schaue mir deine Methoden (CreateParented(...) und so) mal an!
Da muss ich dann der VCL dazwischen greifen, ja?

F.W. 15. Mai 2006 19:44

Re: "Frame" aus DLL in Dialog einbetten
 
Also das mit dem CreateParented und Windows.SetParent habe ich versucht, jedoch schlägt es immer wieder gehl (AccessViolations)
ABER!! Ich habe jetzt was entdeckt, weswegen alles und vlt auch grad CreateParented nicht geht:
>> Der Frame hat scheinbar kein Handle!! Wenn ich da einen Haltepunkt setze, dann zeigt Delphi mir nur einen Hint mit der Aufschrift "Delphi-Exception".

Was geht da beim Frame erzeugen schief?


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