AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frames zur Laufzeit zufügen (aus DLL)

Ein Thema von weltaran · begonnen am 12. Sep 2003 · letzter Beitrag vom 16. Jun 2016
Antwort Antwort
Benutzerbild von weltaran
weltaran

Registriert seit: 12. Sep 2003
Ort: Offenburg
78 Beiträge
 
Delphi 5 Enterprise
 
#1

Frames zur Laufzeit zufügen (aus DLL)

  Alt 12. Sep 2003, 14:03
Hallo!

Ich schreibe gerade eine DLL (inlusive ActiveX). Eine Methode daraus soll ein Formular erzeugen auf dem dann zur Laufzeit ein Frame platziert werden soll. Erzeugen tue ich das Formular mit

...:= Form1.Create(Application);

Im OnCreate-Event will ich nun ein Frame mit


Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
    frame:= TFrame1.Create(self);
    frame.Parent:= self;
end;
Ich habe das Frame vorher schon in ein von einer 'normalen' Application aufgerufenes Formular eingebunden, da funktionierte es.

??

Danke schonmal

weltaran

PS. Ich muss wohl nicht dazusagen, dass ich ziemlicher Anfänger in Delphi bin?

[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von weltaran
weltaran

Registriert seit: 12. Sep 2003
Ort: Offenburg
78 Beiträge
 
Delphi 5 Enterprise
 
#2

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

  Alt 12. Sep 2003, 14:06
Vielleicht sollte ich die Fehlermeldung noch anführen!!

Sobald dann die Form erzeugt wird erscheint die Fehlermeldung:

Frame1 has no parent!


Irgendwelche Adoptionsvorschläge?

weltaran
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#3

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

  Alt 12. Sep 2003, 14:09
Dann gib doch dem Frame nicht self sondern die entsprechende Form als Parent?!
  Mit Zitat antworten Zitat
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, 14: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
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

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

  Alt 12. Sep 2003, 18:37
ich hab irgendwo gelesen, dass wenn Klassen in "DLLs" haben will, dann sollte man COM+ nehmen, stimmt das?

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von weltaran
weltaran

Registriert seit: 12. Sep 2003
Ort: Offenburg
78 Beiträge
 
Delphi 5 Enterprise
 
#6

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

  Alt 15. Sep 2003, 08:58
Hi!

Ich muss vielleicht dazusagen, dass ich die DLL nicht von einem Delphi Programm aus nutze.

Bis jetzt brachte auch ...CreateParented(... keinen Erfolg.

Hmmm...

weltaran
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#7

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

  Alt 16. Jun 2016, 16:40
Auch wenns schon über 12 Jahre her ist. Hier die Lösung:

Wenn man TFrame's ins DLLs nutzen will, sollte man das Application.Handle der DLL auf das MainForm-Handle der Hauptanwendnung (der EXE) setzen. Dann funtkionierts auch mit den Frames.

Ob das gut ist, weiß ich nicht. Bis jetze gehts...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 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