Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: externes Programm startet in nicht sichtbarem Monitor

  Alt 8. Feb 2024, 19:00
Es gibt millionen Lösungen,

aber im Allgemeinen ist es besser das WorkareaRect anstatt dem BoundsRect (Top/Left/Width/Height) zu verwenden.



Delphi-Quellcode:
if not Assigned(Monitor) or Monitor.WorkareaRect.Contains(BoundsRect) then begin
  Self.Left := M.WorkareaRect.Left;
  Self.Top := M.WorkareaRect.Top;
end;
Delphi-Quellcode:
var M := Self.Monitor;
if not Assigned(M) then
  M := Screen.Monitors[0];
if not M.WorkareaRect.Contains(Self.BoundsRect) then begin // or WorkareaRect.IntersectsWith
  if Self.Left < M.WorkareaRect.Left then Self.Left := M.WorkareaRect.Left else Self.Left := M.WorkareaRect.Right - Self.Width;
  if Self.Top < M.WorkareaRect.Top then Self.Top := M.WorkareaRect.Top else Self.Top := M.WorkareaRect.Bottom - Self.Height;
  if Self.Width > M.WorkareaRect.Width then Self.Width := M.WorkareaRect.Width;
  if Self.Height > M.WorkareaRect.Height then Self.Height := M.WorkareaRect.Height;
end;
....
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Feb 2024 um 19:04 Uhr)
  Mit Zitat antworten Zitat