5

我认为这很简单,但我需要能够将表​​单最大化到特定屏幕。似乎找不到任何 Delphi 特定信息。

我可以记住表单在后续应用程序加载中的位置。但是,当我恢复位置然后调用WindowState := wsMaximized时,表单会移动到另一个屏幕!(我确实在该屏幕上也可以看到其他形式 - 它似乎最大化到“活动屏幕”)

所以我需要一个这样的功能:

procedure Maximize(const aScreenIndex : Integer);
begin
 if aScreenIndex < Screen.MonitorCount then
   //Maximize to that screen
end;
4

2 回答 2

5

拦截WM_GETMINMAXINFO消息并根据需要调整其MINMAXINFO结构内的坐标。

于 2011-06-16T07:22:18.090 回答
1

在设计时将 Form.Position 设置为 poDesigned 在 Form.FormShow 或您的 Maximize 过程中:

procedure Maximize(const aScreenIndex : Integer);
begin
  if aScreenIndex < Screen.MonitorCount then
  begin 
   //Maximize to that screen
    Myform.Left := screen.Monitors[aScreenIndex ].Left;
    Myform.WindowState := wsMaximized;
  end; 
end;
于 2011-06-16T09:05:24.990 回答