Modales Fenster positionieren
-
Hallo zusammen
In meiner Software habe ich Popups, die ich als modale Fenster anzeige (ShowModal()). Nun ist es aber so, dass das Programm auf dem zweiten Bildschirm laufen soll. Über Screen->Monitors[] hole ich mir die entsprechenden Koordinaten und die Software erscheint auch auf dem eingestellten Display.
Allerdings habe ich Probleme mit den modalen Popups. Diese erscheinen immer auf dem ersten Display. Dabei wird die Position abhängig vom MainForm berechnet.
this->Left = Application->MainForm->Left + (Application->MainForm->Width - this->Width) / 2; this->Top = Application->MainForm->Top + (Application->MainForm->Height - this->Height) / 2;
Sobald aber ShowModal aufgerufen wird, werden Left und Top geändert, so dass diese auf das erste Display verweisen.
Hat jemand eine Idee, wie ich das Problem lösen / umgehen kann? Die Fenster müssen modal sein, da sie abfragen für den Ablauf stellen.
Oder gibt es eine andere Möglichkeit, der Software mitzuteilen, auf welchem Display sie laufen soll? Eine Art globale Einstellung unter der VCL oder etwas Ähnliches?
-
bei einer kleinen Testanwendung (Mainform und Form2) wird das 2. Form (ShowModal) genau wie das Mainform auf dem 2. Monitor angezeigt
veränderst du Top und Left der Formulare eventuell noch irgendwo?
wo setzt du die Werte für Top und Left? Im Konstruktor? OnShow?
-
-
Das Problem scheint gelöst zu sein. Vielen Dank für die Rückmeldungen.
Die Eigenschaften Position und DefaultMonitor passt nicht (oder nicht zusammen). Nun nutze ich poScreenCenter und dmMainForm und schon sieht das gut aus. Ich werde das noch etwas ausgiebiger testen, aber ich bin zuversichtlich.