Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frame aus Dll in Form anzeigen (https://www.delphipraxis.net/72591-frame-aus-dll-form-anzeigen.html)

schu-r 3. Jul 2006 14:47


Frame aus Dll in Form anzeigen
 
Hallo !


Ich weiss. Dieses Thema wurde in ähnlicher weise schon mehrfach diskutiert. Leider sind alle Diskussionen meist bei einer Form gelandet anstatt eines TFrame.

Folgendes habe ich schon.
Eine funktionierende Pluginschnittstelle mit DLL und FastShareMem.
Ich kann Strings und Objekte zwischen App und Plugin austausschen. (Wichtig dabei. Wers erstellt muss es auch zerstören, sonst gibts saures).

Ich erzeuge in einem PLugin ein TFrame und übergebe es an meine Form. Dort wird es leider nicht angezeigt.
Hat jemand eine Idee warum das so sein könnte?

(D7)

DGL-luke 3. Jul 2006 14:49

Re: Frame aus Dll in Form anzeigen
 
Ein wenig Quelltext wäre hübsch.

schu-r 3. Jul 2006 15:13

Re: Frame aus Dll in Form anzeigen
 
Kommt sofort.

Das Innere des Plugins ist leider etwas komplizierter zu erlären.
Kurzfassung. Es wird eine TList mit den Parameter übergeben und ich bekomme eine TList mit den Ergebnissen zurück.

Code:
DLL:
frame:TFrame1 im Plugin Private definiert.
procedure TPlugin.getFrame(Parameters,Erg: TList);
begin
  frame:=TFrame1.Create(nil);
  frame.Top:=10;
  setV(Erg,frame); // Ergebnisse schreiben
end;

Programm:
frame:TFrame1 in der Form als Private definiert.
procedure TForm1.Button1Click(Sender: TObject);
begin
   Plugin_Load(TPlugin,'BASE'); // Laden der Plugins
   Plugins.PluginNr[0].CallFunction('getFrame',[]); // Aufruf der Funktion
   frame:=TFrame1(Plugins.PluginNr[0].getResultObject(0)); // Objekt holen
   frame.Parent:=self;
   frame.Top:=0;
   frame.Left:=0;
   frame.Width:=100;
   frame.Height:=100;
   frame.Show;
end;

schu-r 4. Jul 2006 08:51

Re: Frame aus Dll in Form anzeigen
 
Hab das Problem gefunden!

Um probleme zu vermeiden wurden unsere Projekte ohne laufzeit packages kompiliert.
Nachteil die DLL und das Programm haben eine eigene instanz der VCL. Grafische Daten können so nicht ausgetauscht werden.

Wenn ich einstelle das er programm und dll mit Laufzeitpackage 'vcl' kompilieren lasse, dann läuft alles.
Beide benutzzen die gleiche VCL und der Frame wird ohne probleme angezeigt.

Leider ist dies für unsere Programme nicht möglich.
Weiss jemand anders eine Idee wie ich ohne Laufzeitpackages die beiden VCL's verbinden kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.

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