Delphi - развернуть форму до определенного экрана

Довольно простой, я бы подумал, но мне нужно иметь возможность развернуть форму до определенного экрана. Кажется, не удается найти какую-либо конкретную информацию о Delphi.

Я могу запомнить положение форм при последующих загрузках приложения. Однако, когда я восстанавливаю позицию, а затем вызываю WindowState := wsMaximized, форма переходит на другой экран! (у меня есть и другие формы, которые также видны на этом экране - он, кажется, разворачивается до «активного экрана»)

Итак, мне нужна такая функция:

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

person Simon    schedule 16.06.2011    source источник


Ответы (2)


Перехватите сообщение WM_GETMINMAXINFO и при необходимости измените координаты внутри его структуры MINMAXINFO.

person Remy Lebeau    schedule 16.06.2011

Установите для 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;
person Despatcher    schedule 16.06.2011