Entwickler-Ecke

Dateizugriff - Parent in dll Form setzen


Carla - Mi 03.03.10 17:04
Titel: Parent in dll Form setzen
Hallo,

ich möchte Formulare in dll auslagern.
Die Fromulare sind im Projekt recht unabhängig und werden mit Showmodal angezeigt.
Z.B. die komplette Kundenverwaltung.
Das funktioniert wie gewünscht.
Ich möchte das Formular aber jetzt im Parent der Hauptanwendung anzeigen.
Ich habe das so gelöst:
in der dll: Windows.SetParent(Form2.Handle, ParentHandle);
Als Parenthandle wird das Handle der Mainform übergeben.
Das Fenster wird wie gewünscht angezeigt aber eingefroren. D.h. Tastatur und Maus
funktionieren nicht mehr.
Hat wer einen Tip, wie ich das hinbekomme?

Gruß
Carla


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 03.03.2010 um 16:38


bummi - Mi 03.03.10 17:54

with TMyForm.Create(FormularDerHauptAnwendung).Showmodal

tut nicht wie gewünscht ??


BenBE - Mi 03.03.10 18:06

Wenn Du unbedingt mit der VCL über Modulgrenzen hinweg arbeiten möchtest, linke mindestens gegen die RTL.bpl und die VCL.bpl (mit Laufzeit-Packages), da du dir sonst selbst das Leben unnötig schwer machst. Solch vielsagende Fehlermeldungen wie TFont kann nicht zu TFont zugewiesen werden sind da nur die harmlosen Randerscheinungen bei Nutzung der VCL ohne Laufzeit-Packages.


Carla - Mi 03.03.10 18:27

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Wenn Du unbedingt mit der VCL über Modulgrenzen hinweg arbeiten möchtest, linke mindestens gegen die RTL.bpl und die VCL.bpl (mit Laufzeit-Packages), da du dir sonst selbst das Leben unnötig schwer machst. Solch vielsagende Fehlermeldungen wie TFont kann nicht zu TFont zugewiesen werden sind da nur die harmlosen Randerscheinungen bei Nutzung der VCL ohne Laufzeit-Packages.


Ich verwende die VCL nicht direkt über Modulgrenzen hinweg, sondern die dll soll eine eigenständige Anwendung sein. Zwischen Application und dll ist ein Interface.
Das aufrufende Programm muss nicht notwendiger weise ein Delphi-Programm sein. Deshalb werden auch nur Windowshandle übergeben.
Ich verwende um Platz zu sparen zwar Vcl,Rtl und noch zwei bpl als Laufzeit - bpl.
Ich halte allerdings das Delphi bpl Konzept und Laufzeit-bpl überhaupt für den größten Schwachsinn, den es in keiner anderen Programmiersprache gibt.

Ich habe die Lösung funktionierend bereits als Outofprocess-Comserver am Laufen.
Wollte aber um die Registrierung zu umschiffen, das Ganze auf dll umstellen.


BenBE - Mi 03.03.10 19:02

Dann geht das mit dem Zugriff über SetWindowParent.