Hacer que un formulario ocupe más de una pantalla

3261 vistas

Y nos preguntaremos, ¿para qué queremos que un formulario ocupe más de una pantalla? La respuesta es sencilla, para trabajar con varios monitores a la vez con alguna VGA que nos lo permita.

Para este menester, sólo tendremos que capturar los mensajes WM_WINDOWPOSCHANGING y WM_GETMINMAXINFO



delphi
  1. type
  2.   TForm1 = class(TForm)
  3.   ...
  4.     procedure WMWindowPosChanging(var AMessage: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
  5.     procedure WMGetMinMaxInfo(var AMessage : TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
  6.     procedure Button1Click(Sender: TObject);
  7.   ...
  8.   end;
  9.  
  10. implementation
  11.  
  12. procedure TForm1.WMGetMinMaxInfo(var AMessage: TWMGetMinMaxInfo);
  13. var
  14.   _sz: TPoint;
  15. begin
  16. _sz := Point(3000, 2000);
  17. with AMessage.MinMaxInfo^ do begin
  18.   ptMaxSize := TPoint(_sz);
  19.   ptMaxTrackSize := TPoint(_sz)
  20. end
  21. end;
  22.  
  23. procedure TForm1.WMWindowPosChanging(var AMessage: TWMWindowPosChanging);
  24. begin
  25. // not inherited
  26. end;
  27.  
  28. procedure TForm1.Button1Click(Sender: TObject);
  29. begin
  30. SetBounds(0, 0, 3000, 2000);
  31. end;