Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#18

Re: Sinn von DLL-Formularen

  Alt 23. Sep 2005, 10:59
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
  Mit Zitat antworten Zitat