![]() |
Fenster auf bestimmten Monitor öffnen
Wie ist es möglich ein Fenster auf einem bestimmten Monitor zu öffnen?
Die absolute Position X und Y meines Hauptformulars wird beim Beenden gespeichert. Vorher wird noch ein Ladefenster angezeigt. In der Prozedur, die vor dem Show des Ladefensters kommt, lade ich die Position wo das Hauptfenster das letzte Mal zu sehen war. Mit diesen Koordinaten hole ich mir dann die Monitornummer:
Delphi-Quellcode:
Damit bekomme ich dann in FScreen.MonitorNum die Nummer des Monitors heraus.
FScreen := Screen.MonitorFromWindow(FormLoading.Handle);
P.X := Ini.ReadInteger('PosMainWindow', 'MainX', (FScreen.Width - FormLoading.Width) div 2); P.Y := Ini.ReadInteger('PosMainWindow', 'MainY', (FScreen.Height - FormLoading.Height) div 2); FScreen := Screen.MonitorFromPoint(P); Wie platziere ich das Ladefenster nun mittig auf den Monitor FScreen.MonitorNum? Das Folgende halte ich für falsch, weil der zweite Moitor (das Ladefenster wäre in meinem Fall auf Monitor #2) nicht zwingend rechts neben dem Hauptmonitor sein muss
Delphi-Quellcode:
FormLoading.Left := FScreen.Left + (FScreen.Width - FormLoading.Width) div 2;
FormLoading.Top := FScreen.Top + (FScreen.Height - FormLoading.Height) div 2; |
AW: Fenster auf bestimmten Monitor öffnen
Mit
Delphi-Quellcode:
erhältst du die Mitte des Monitors. Die Werte für Left/Top des Ladefensters liegen jeweils um die halbe Breite/Höhe nach links/oben verschoben.
FScreen.BoundRect.CenterPoint
|
AW: Fenster auf bestimmten Monitor öffnen
Ist dir schonmal aufgefallen, dass TForm ein Property Monitor, sowie DefaultMonitor besitzt?
Und zusätzlich würde ich noch das Property Position empfehlen, z.B. mit poScreenCenter. (Achtung, poDesktopCenter ist nicht empfehlenswert) |
AW: Fenster auf bestimmten Monitor öffnen
eventuell
Delphi-Quellcode:
?
Form1.MakeFullyVisible(Screen.Monitors[NummerDesMonitors]);
![]() |
AW: Fenster auf bestimmten Monitor öffnen
Zitat:
Ich möchte das Formular auf einen bestimmten Monitor platzieren, da bringt mir Monitor und DefaultMonitor in TForm nix. |
AW: Fenster auf bestimmten Monitor öffnen
War das nicht beschreibbar?
OK, wäre natürlich blöd und dann müsste man doch die Desktop-Koordinaten selbst ausrechnen lassen. Sekunde ... |
AW: Fenster auf bestimmten Monitor öffnen
Wie oben zu sehen habe ich es so gemacht.
Ich hole mir erst die letzten auf der Festplatte gespeicherten Koordinaten des Hauptfensters und speichere die in P.X und P.Y. Diese rechne ich mit
Delphi-Quellcode:
um, damit ich in
FScreen := Screen.MonitorFromPoint(P);
Delphi-Quellcode:
den passenden Monitor dafür habe.
FScreen
Danach
Delphi-Quellcode:
FormLoading.Left := FScreen.BoundsRect.CenterPoint.X - (FScreen.Width div 2);
FormLoading.Top := FScreen.BoundsRect.CenterPoint.Y - (FScreen.Height div 2); |
AW: Fenster auf bestimmten Monitor öffnen
Sollte das nicht besser so heißen:
Delphi-Quellcode:
FormLoading.Left := FScreen.BoundsRect.CenterPoint.X - (FormLoading.Width div 2);
FormLoading.Top := FScreen.BoundsRect.CenterPoint.Y - (FormLoading.Height div 2); |
AW: Fenster auf bestimmten Monitor öffnen
Mein Fehler. War nur ein Tippfehler hier im Forum.
|
AW: Fenster auf bestimmten Monitor öffnen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 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