Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TForm modal aber nicht application-modal anzeigen (https://www.delphipraxis.net/159994-tform-modal-aber-nicht-application-modal-anzeigen.html)

Zacherl 22. Apr 2011 03:58


TForm modal aber nicht application-modal anzeigen
 
Hey,

der Titel ist etwas schlecht formuliert, aber mir fiel nichts besseres ein. Ich habe eine Anwendung, welche zwei Child Formulare erzeugt und mit Show() anzeigt. Auf diesen Formularen befindet sich jeweils ein Button, der per Click ein weiteres Fenster öffnen soll. Dieses möchte ich zwar modal anzeigen, aber so, dass nur das dazugehörige Child Fenster betroffen ist. Das zweite Child Fenster soll nach wie vor den Focus erhalten können, auch wenn das modale Fenster von Child 2 noch nicht geschlossen ist.

Probiert habe ich es mit einem normalen ShowModal(), was allerdings nicht funktioniert. In diesem Falle ist das neue Fenster zwar modal, aber ich kann weder Child 2, noch das Main Fenster auswählen.

Rufe ich allerdings beispielsweise MessageBox() mit dem Handle des Childs als ersten Parameter auf, entsteht die von mir gewünschte Funktionalität. Kann ich diese auch irgendwie mit normalen Forms nachbilden?

Viele Grüße
Zacherl

Namenloser 22. Apr 2011 04:34

AW: TForm modal aber nicht application-modal anzeigen
 
Ich weiß nicht, was bei MessageBox intern genau passiert, aber die einfachste Lösung wäre, die Eigenschaft Enabled des Childs auf False zu setzen.

Zacherl 22. Apr 2011 12:23

AW: TForm modal aber nicht application-modal anzeigen
 
Also ich habe mal etwas in die Sourcen der ShowModal() Methode geschaut. Dort werden unter anderem sämtliche anderen Fenster der Anwendung deaktiviert. Habe mir die Funktion jetzt mal dupliziert und den entsprechenden Aufruf mit
Delphi-Quellcode:
EnableWindow(ParentWindow, false);
ersetzt. Den ersten Tests nach zumindest, funktioniert es jetzt wie gewünscht :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 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