![]() |
Zwei Forms - Zwei Monitore
Hallo,
erst mal: ich hoffe, dass ich mit meinem Problem in der richtigen Abteilung gelandet bin. Wie das Thema schon kurz beschreibt: Ich habe eine Anwendung mit zwei Formularen, wobei das zweite Formular auf einem zweiten Monitor angezeigt werden soll, wenn denn ein 2. Monitor überhaupt vorhanden ist. Bisher hatte ich mit dieser Thematik nichts zu tun, und darum hab ich auch das Forum nach diesbezüglichen Informationen durchsucht. Was mich aber nicht weiter gebracht hat. Über Screen.Monitors kann ich Infos über die angeschlossenen Monitore erhalten, aber wie weise ich meiner Form einen Monitor zu? Mit "DefaultMonitor" funktioniert es nicht. Ich habe ausprobiert - die 2. Form zur Laufzeit zu erzeugen oder automatisch - die erste Form auf den Primär-Monitor und den 2.Monitor gezogen, und von dort aus Form2 erzeugt
Code:
Es ändert sich nichts. Die Frage ist also, was mache ich falsch?
procedure TFrmMoni1.Button2Click(Sender: TObject);
begin with TFrmMoni2.Create(Application) do try DefaultMonitor := dmDesktop; // und alle anderen auch ausprobiert... ShowModal; finally Release; end; end; Nachtrag: Wenn ich Form1 auf Monitor2 ziehe, und Form2 DefaultMonitor := dmDesktop zuweise, dann funktioniert es. Aber so soll es ja nicht sein: Form1 soll "automatisch" auf Monitor1 sein und Form2 auf Monitor2. |
AW: Zwei Forms - Zwei Monitore
Das wäre ein Beispiel für eine Zentrierte Ausgabe auf dem ersten nicht primären Monitor.
Delphi-Quellcode:
var
i:Integer; begin if Screen.MonitorCount > 1 then begin for i := 0 to Screen.MonitorCount-1 do begin if not Screen.Monitors[i].Primary then begin Left := Screen.Monitors[i].BoundsRect.Left + ((Screen.Monitors[i].BoundsRect.Right - Screen.Monitors[i].BoundsRect.Left) - Width) div 2; Top := Screen.Monitors[i].BoundsRect.Top + ((Screen.Monitors[i].BoundsRect.Bottom - Screen.Monitors[i].BoundsRect.Top) - Height) div 2; break; end; end; end; end; |
AW: Zwei Forms - Zwei Monitore
Delphi-Quellcode:
procedure TForm2.MoveTo2ndMonitor;
begin if Screen.MonitorCount > 1 then with Screen.Monitors[1] do begin self.left := left; self.top := top; end; end; procedure TForm2.ToggleWindowState; begin if WindowState = wsMaximized then begin WindowState := wsNormal; BorderStyle := bsSizeable; end else begin // ohne Rand im Vollbild auf 2. Monitor verlegen MoveTo2ndMonitor; BorderStyle := bsNone; WindowState := wsMaximized; end; end; // Doppelklick auf Formular schiebt Fenster im Vollbild auf 2. Monitor // bzw. wieder zurück procedure TForm2.FormDblClick(Sender: TObject); begin ToggleWindowState; end; |
AW: Zwei Forms - Zwei Monitore
Hallo,
wooowww...das ging aber schnell. @Bummi: Ja, das war es! Im "OnCreate" ausgeführt, funktioniert prächtig! @sx2008: Das probier ich auch noch aus. Vielen Dank euch beiden!!! :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz