-5

我想创建一个 api,如果表单在第二个监视器上打开,则可以在双监视器中跟踪我的 delphi 应用程序的表单,那么下一个表单应该在那里。这条赛道将在 c# windows 应用程序中完成我的 api。请指导

描述:

我有一个德尔福应用程序。当您使用双显示器时,出现以下问题。让我们看看场景:

单击 1 上的按钮后将打开 1、2 和 3 中的 3 个,单击 2 上的按钮后将打开 3。当显示器为单个时,一切正常。现在,当我连接第二台显示器时,默认情况下,表格 1 将在第一台显示器的主显示器上打开,当我将表格 1 从显示器 1 移动到显示器 2 并单击表格 2 的按钮以打开表格 3 时,它将在显示器 1 上打开而不是监视器 2。它应该在监视器 2 上打开,这意味着在最后打开的表单所在的监视器上。我无法在我的 delphi 代码中实现它。所以我想在 c# 中制作一个 api,它将为我的 delphi 应用程序完成跟踪窗口的这项工作。

4

1 回答 1

0

您不需要 C# 来执行此操作,可以使用 Delphi 完成。以下代码可以添加到每个表单的 OnCreate 或 OnShow 事件中:

var
 m: TMonitor;
 cp: TPoint;
begin
  // Get the Cursor Position
  GetCursorPos(cp);
  // Get the Monitor the Cursor is on
  m := Screen.MonitorFromPoint(cp);
  // Position the Form on the correct Monitor, about the center
  Self.Top  := ((Screen.Monitors[m.MonitorNum].Height - 30) div 2) - (Self.Height div 2);
  Self.Left := (Screen.Monitors[m.MonitorNum].Width div 2) - (Self.Width div 2) + m.Left;
于 2017-04-03T11:36:15.383 回答