我使用 Delphi 10,当我创建默认 vcl 应用程序并运行应用程序时,我有两个显示器,主窗体总是出现在第一个显示器中,有没有办法让它默认出现在第二个显示器中?
这可能是 IDE 或属性或代码中的选项
谢谢
TForm
有一个默认设置为 dmActiveForm
的 DefaultMonitor
属性。 当没有窗体处于活动状态时,将使用主监视器。 但是,无法专门将DefaultMonitor
设置为第二个监视器。
TForm
还具有 Monitor
属性,但无论出于何种原因,它都是只读的。
因此,若要在特定监视器上显示TForm
,可以在全局TScreen.Monitors[]
列表中找到所需的监视器,然后:
-
手动将窗体的
Left
/Top
属性设置为监视器的BoundsRect
或WorkareaRect
属性边界内的 X/Y 坐标。 -
将监视器传递给窗体的公共
MakeFullyVisible()
方法。
我有两个宽度为 1600px 的显示器。我的主要监视器在右侧,因此,为了在左侧放置一个表单,我必须为他的Left
属性传递一个负值。
procedure TForm1.Button1Click(Sender: TObject);
begin
// (3200 / 2 = + 1600) * -1 = -1600
Left := (Screen.DesktopWidth div 2) * -1;
end;
结果是-1600
这意味着我的辅助显示器左侧最多。
您还可以通过调用 Screen.Monitors[i].Left
来获取每个监视器的"最左"位置,类似于以下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
lMens: string;
begin
lMens := '';
for I := 0 to Screen.MonitorCount - 1 do
begin
lMens := lMens + ' | '
+ Format('%d - Left = %d', [i, Screen.Monitors[i].Left])
end;
ShowMessage(lMens);
end;
我希望对你有帮助。