在第二台显示器上启动程序?

stu*_*lly 20 delphi multiple-monitors c++builder point-of-sale

有没有办法在Delphi或C++ Builder中指定应用程序出现在哪个监视器上?

我正在为一个客户开发一个简单的程序,它在一个二级监视器上显示厨房订单,由一个酒店系统生成.目前,他们需要在启动后手动将窗口拖动到第二个监视器上.

Jim*_*eth 28

全局Screen对象(Forms的一部分)具有监视器的概念.我认为这是在Delphi 6或7中添加的.以下代码将起作用:

// Put the form in the upper left corner of the 2nd monitor
//   if more then one monitor is present.
if Screen.MonitorCount > 1 then
begin
  Left := Screen.Monitors[1].Left;
  Top := Screen.Monitors[1].Top;
end;
Run Code Online (Sandbox Code Playgroud)

您可以使用该位置的任何正偏移量将其放在该监视器中的任何位置.您也可以从那里获得宽度和高度以了解尺寸.


Bar*_*lly 23

在程序关闭之前保存窗口位置并在启动时恢复它们.多监视器显示只会增加桌面的大小; 其他监视器表面只有相同X/Y平面的不同部分,其原点位于主监视器的左上角.

这可以通过几个组件中任何一个自动完成.

顺便说一句,Forms单元中的Screen变量有一个名为MonitorCount的属性和另一个可索引属性,Monitors [Index:Integer]:TMonitor.TMonitor具有指示左,顶部,宽度,高度等的属性,因此您需要的所有信息都在那里.

  • 您还应该在启动时使用设置之前验证已保存的监视器.否则,如果用户移除曾经在那里的监视器,则窗口根本不会显示在屏幕上. (6认同)