AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Formular auf zweitem Monitor starten?
Thema durchsuchen
Ansicht
Themen-Optionen

Formular auf zweitem Monitor starten?

Ein Thema von a.def · begonnen am 19. Dez 2016 · letzter Beitrag vom 19. Dez 2016
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#1

AW: Formular auf zweitem Monitor starten?

  Alt 19. Dez 2016, 10:25
Erst beim Anzeigen der Form (Show bzw. Visible=True) werden die Property DefaultMonitor und Position ausgewertet.
Will man sowas "manuell" vor dem Anzeigen setzen, dann sollte Position=poDesignd und DefaultMonitor=dmDesktop eingestellt sein, sonst überschreibt die böse VCL deine Vorgaben, weil sie zu blöd ist das bereits im Constructor zu erledigen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#2

AW: Formular auf zweitem Monitor starten?

  Alt 19. Dez 2016, 12:31
Zitat:
Erst beim Anzeigen der Form (Show bzw. Visible=True) werden die Property DefaultMonitor und Position ausgewertet.
Danke für die Information.
Das bedeutet dann wohl auch leider, dass man unter Windows XP das gewisse Flickern, wenn das Formular platziert wird, nicht weg bekommt auf diese Weise.

Ich habe nun Position auf poDesigned gesetzt - im Objektinspektor.
DefaultMonitor habe ich auf ActiveForm gelassen.

Ich hatte Position zwar schon auf poDesigned gesetzt, aber erst im OnCreate was wohl nicht die richtige Stelle war. Nun die Änderung im Objektinspektor brachte das gewünschte Ergebnis.
Dank meiner folgenden Prozedur wird ein Formular immer auf den Hauptmonitor zentriert ausgegeben, wenn es irgendwo im Nirvana rumfliegt

Delphi-Quellcode:
 if Screen.MonitorFromWindow(aFormToSetPos.Handle, mdNull) = nil then
  begin
   // Form is outside of any monitor. Move to center of main monitor
   aFormToSetPos.Top := (Screen.Height - aFormToSetPos.Height) div 2;
   aFormToSetPos.Left := (Screen.Width - aFormToSetPos.Width) div 2;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Formular auf zweitem Monitor starten?

  Alt 19. Dez 2016, 13:56
Screen ist die Gesamtheit aller Monitore. Um sicherzugehen würde ich das so formulieren:
aFormToSetPos.Top := (Screen.Monitors[0].Height - Screen.Monitors[0].Height) div 2; etc.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#4

AW: Formular auf zweitem Monitor starten?

  Alt 19. Dez 2016, 16:07
Danke für den Hinweis.
Sicher ist sicher.
  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 01:37 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