Delphi – Start program on a second monitor


Is there a way to specify which monitor a application appears on in Delphi or C++Builder?

I am developing a simple program for a customer, which displays kitchen orders on a secondary monitor, generated by a hospitality system. Currently they need to manually drag the window onto the second monitor after it starts.

Best Solution

The global Screen object (part of Forms) has the concept of Monitors. I think this was added circa Delphi 6 or 7. The following code will work:

// Put the form in the upper left corner of the 2nd monitor
//   if more then one monitor is present.
if Screen.MonitorCount > 1 then
  Left := Screen.Monitors[1].Left;
  Top := Screen.Monitors[1].Top;

You could use any positive offset from that position to put it anywhere in that monitor. You can get the width and height from there too to know the dimensions.

Related Question