Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
678 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Fenster auf bestimmten Monitor öffnen

  Alt 9. Feb 2024, 13:37
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:
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);
Damit bekomme ich dann in FScreen.MonitorNum die Nummer des Monitors heraus.

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;
Du machst Dir viel zu viel Arbeit. Setze die DefaultMonitor-Eigenschaft des Forms auf dmDesktop. Dann sind Left und Top relativ zum virtuellen Desktop und nicht mehr zu einem spezifischen Monitor.
Peter Below
  Mit Zitat antworten Zitat