Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

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

Re: Frames zur Laufzeit zufügen (aus DLL)

  Alt 12. Sep 2003, 15:10
TFrame1.CreateParented(Self.Handle);
OHNE Frame.Parent := Self.

Dein Problem ist es das du versuchst VCL Objecte aus einer DLL mit denen in der EXE zu verwenden. Im Grunde kann dies nur funktionieren wenn die DLL und die EXE+DLL die Grundlagenpackages wie VCL??.bpl gemeinsam benutzen.
Ich weiß man hört immer wieder das DLL's kein Problem sind, und das doch alles mit Forms/Klassen in DLL's absolut sauber funktioniert. Diese Aussagen sind schlichtweg falsch, verallgemeinert, und zeugen vom fehlenden Wissen darüber wie DLL's + VCL arbeiten.

Grundsätzlich kann man sagen: Eine DLL-Funktion die die VCL benutzt ist immer dann SICHER wenn sie bevor sie zurückkehrt zum Aufrufer alle VCL Fourmlare die sie erzeugt hat wieder zerstört. D.h. ganz konkret das NUR Modale Dialoge die VCL-basiert sind in DLL's korrekt funktionieren.
Da hilft auch kein Rumbiegen und Tricksen mit dem Application Object, oder mit Application.Handle. Die VCL und das Klassenkonzept von Delphi ist nicht DLL konform. Erst, und nur dann, wenn die DLL die gleichen Packages wie die EXE benutzten, und die gemeinsam genutzten Klassen sind in DIESEN Packages, wird es sicher. Denn nun exitieren im Prozess und den DLL's die gemeinsammen Klassen nur EINMAL und nicht wie bei deinem Problem ZWEIMAL.

Gruß Hagen
  Mit Zitat antworten Zitat