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;