Wenn es eine Option ist poMainFormCenter oder poOwnerFormCenter für die Dialoge zu verwenden ...
Ansonsten, herausfinden auf welchem Monitor das Hauptfenster angezeigt wird und den Offset des Dialogs anpassen
Delphi-Quellcode:
Function GetMonitorIndex4Form(F:TForm):Integer;
var
i:Integer;
IR:TRect;
begin
I := -1;
for I := 0 to Screen.Monitorcount - 1 do
begin
IntersectRect(IR, Screen.Monitors[i].BoundsRect,F.BoundsRect);
if EqualRect(IR,F.BoundsRect) then Result := i;
end;
end;
.....
var
mi:Integer;
begin
mi := GetMonitorIndex4Form(self);
if mi>-1 then
begin
FormX.Left := Screen.Monitors[mi].BoundsRect.Left + xxx;
FormX.Top := Screen.Monitors[mi].BoundsRect.Top + yyy;
end;
end;
Wenn das Form nicht ganz auf einem Monitor liegt (teilweise auf 2 Monitoren dargestellt wird) musst Du das ganze wunschgemäß anpassen.