Hallo,</p>
<p>ich habe nun die verschiedensten Beiträge hier im Forum durchgearbeitet
und festgestellt, dass Thema ist viel komlexer als ich je vermutet hatte. Nun
will ich in meiner Anwendung diesbezüglich einiges umstellen und habe dazu
folgende Konstellation. Die Hauptanwendung ist ca. 3..4 MB groß und es
gibt dann noch einige wenige Dll's, im allgemeinen unter 1 MB. Das Dll-Konzept
würde ich gern beibehalten. Die Fenster aus der DLL dürfen alle Modal
sein. </p>
<p>Mein Code in der DLL sah bisher so aus:</p>
<p><font face="Courier New, Courier, mono" size="2">procedure ShowPreview(AppsHandle:
HWND; ...);<br>
BEGIN<br>
Application.Handle := AppsHandle;</font></p>
<p><font face="Courier New, Courier, mono" size="2"> </font><font face="Courier New, Courier, mono" size="2">ProgressForm
:= TProgressForm.Create(Application);<br>
</font><font face="Courier New, Courier, mono" size="2">ProgressForm.Show;<br>
</font></p>
<p><font face="Courier New, Courier, mono" size="2">Application.ProcessMessages;</font></p>
<p><font face="Courier New, Courier, mono" size="2"> ReportForm := TReportForm.Create(Application);</font></p>
<p><font face="Courier New, Courier, mono" size="2">TRY<br>
ReportForm.ShowModal;<br>
FINALLY<br>
ReportForm.Free;<br>
END;<br>
ProgressForm.Free;<br>
</font></p>
<p><font face="Courier New, Courier, mono" size="2"> Application.Handle := 0;<br>
<br>
END;<br>
</font></p>
<p>Sinn und Zweck der Sache war, das Fenster durch die DLL verschwinden zu lassen
und der Hauptanwendung zuzuordnen, da diverse Modale Dialoge in der DLL hinter
dem Fenster verschwunden sind. Mit dem Setzen des Handles war der Effekt weg
und alles verlief IO. Nun trat aber auf einem Rechner nach dem Beenden der DLL
ein unerklärlicher Absturz auf. Macht die Routine evtl. noch etwas, was
so nicht richtig ist (speziell der Zugriff auf Application.Handle)?</p>
<p>Wie könnte ich sonst Fenster der DLL Modal über die Hauptanwendung
anzeigen?? </p>
<p>Schöne Grüße, Mario Noack</p>
<p>ich habe nun die verschiedensten Beiträge hier im Forum durchgearbeitet
und festgestellt, dass Thema ist viel komlexer als ich je vermutet hatte. Nun
will ich in meiner Anwendung diesbezüglich einiges umstellen und habe dazu
folgende Konstellation. Die Hauptanwendung ist ca. 3..4 MB groß und es
gibt dann noch einige wenige Dll's, im allgemeinen unter 1 MB. Das Dll-Konzept
würde ich gern beibehalten. Die Fenster aus der DLL dürfen alle Modal
sein. </p>
<p>Mein Code in der DLL sah bisher so aus:</p>
<p><font face="Courier New, Courier, mono" size="2">procedure ShowPreview(AppsHandle:
HWND; ...);<br>
BEGIN<br>
Application.Handle := AppsHandle;</font></p>
<p><font face="Courier New, Courier, mono" size="2"> </font><font face="Courier New, Courier, mono" size="2">ProgressForm
:= TProgressForm.Create(Application);<br>
</font><font face="Courier New, Courier, mono" size="2">ProgressForm.Show;<br>
</font></p>
<p><font face="Courier New, Courier, mono" size="2">Application.ProcessMessages;</font></p>
<p><font face="Courier New, Courier, mono" size="2"> ReportForm := TReportForm.Create(Application);</font></p>
<p><font face="Courier New, Courier, mono" size="2">TRY<br>
ReportForm.ShowModal;<br>
FINALLY<br>
ReportForm.Free;<br>
END;<br>
ProgressForm.Free;<br>
</font></p>
<p><font face="Courier New, Courier, mono" size="2"> Application.Handle := 0;<br>
<br>
END;<br>
</font></p>
<p>Sinn und Zweck der Sache war, das Fenster durch die DLL verschwinden zu lassen
und der Hauptanwendung zuzuordnen, da diverse Modale Dialoge in der DLL hinter
dem Fenster verschwunden sind. Mit dem Setzen des Handles war der Effekt weg
und alles verlief IO. Nun trat aber auf einem Rechner nach dem Beenden der DLL
ein unerklärlicher Absturz auf. Macht die Routine evtl. noch etwas, was
so nicht richtig ist (speziell der Zugriff auf Application.Handle)?</p>
<p>Wie könnte ich sonst Fenster der DLL Modal über die Hauptanwendung
anzeigen?? </p>
<p>Schöne Grüße, Mario Noack</p>