AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster auf bestimmten Monitor öffnen

Ein Thema von DieDolly · begonnen am 8. Feb 2024 · letzter Beitrag vom 9. Feb 2024
Antwort Antwort
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
675 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
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: Fenster auf bestimmten Monitor öffnen

  Alt 9. Feb 2024, 14:03
Wieso viel zu viel Arbeit? Deinen Ansatz verstehe ich ohnehin nicht.
Was bringt mir dmDesktop? Das Formular soll auf einen bestimmten Monitor und den gibt man mit dmDesktop nicht an.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.047 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fenster auf bestimmten Monitor öffnen

  Alt 9. Feb 2024, 15:54
Setze die DefaultMonitor-Eigenschaft des Forms auf dmDesktop. Dann sind Left und Top relativ zum virtuellen Desktop und nicht mehr zu einem spezifischen Monitor.
Ich glaube das passt irgendwie nicht. Das Left und Top eines Forms bezieht sich immer auf den Desktop. Mit DefaultMonitor = dmDesktop verhindert man nur die automatische Positionierung beim Show gemäß den anderen Optionen. Zusätzlich spielt auch der Wert für Position eine Rolle, den man bei direktem Setzen von Left/Top besser auf poDesigned stellen sollte.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 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