有没有办法在Delphi或C++ Builder中指定应用程序出现在哪个监视器上?
我正在为一个客户开发一个简单的程序,它在一个二级监视器上显示厨房订单,由一个酒店系统生成.目前,他们需要在启动后手动将窗口拖动到第二个监视器上.
全局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;
您可以使用该位置的任何正偏移量将其放在该监视器中的任何位置.您也可以从那里获得宽度和高度以了解尺寸.
在程序关闭之前保存窗口位置并在启动时恢复它们.多监视器显示只会增加桌面的大小; 其他监视器表面只有相同X/Y平面的不同部分,其原点位于主监视器的左上角.
这可以通过几个组件中的任何一个自动完成.
顺便说一句,Forms单元中的Screen变量有一个名为MonitorCount的属性和另一个可索引属性,Monitors [Index:Integer]:TMonitor.TMonitor具有指示左,顶部,宽度,高度等的属性,因此您需要的所有信息都在那里.