MDI's lassen sich auch aus normalen
DLL's heraus laden. Bei Formularenin normalen
DLL's hat es sich bewährt in der EXE bei Laden eines solchen nicht-modalen Forms einen TForm Container zu benutzen. Das heist: die EXE erzeugt erstmal ein eigenes
MDI TForm als Container und übergibt dies als Parent der
DLL. Die
DLL erzeugt ihrerseits ihr Formular und bindet es in dieses
MDI Form als ParentWindow ein. Natürlich muß diese
DLL TFormohne Caption, Border und alClient etc.pp. erzeugt werden. In diesem Moment hat man fast keinerlei Probleme mehr, bis auf den Punkt der Fokusierung der Controls auf solchen Forms.
Das Problem entsteht dadurch das die Operatoren
is und
as nicht mher funktionieren, das heist durch die mehrfache Einbindung der gleichen Klassen in verschiedene Module unterscheiden sich die Codesegment Zeiger auf diese Klassen, jenachdem welches Modul ein Objekt erzeugt hat. Die Abfrage und der Vergleiche einer Klasse funktioniert aber über deren Zeiger in das Codesegement in dem die Klassenstruktur, sprich
RTTI,
VMT und DMT etc.pp., gespeichert sind.
Diese Nachteile gibt es bei Packages eben nicht das selbst diese Codesegementzeiger duch den Compiler/Linker als
DLL Funktionen exportiert werden.
Gruß Hagen