Centrar la ventana en la pantalla

4831 vistas

Para realizar el centrado del formulario, usaremos la opción Position de éste y que puede tomar varios valores:

  • poDesigned: la ventana aparecerá con la misma medida y posción de su creación
  • poDefault: es el sistema quien define la medida y la posición de la ventana
  • poDefaultPosOnly: la medida será la de su creación, pero es el sistema el que establece la posición
  • poDefaultSizeOnly: la posición es la de creación pero el sistema define la medida
  • poScreenCenter: la ventana tendrá la medida de la creación y se mostrará en el centro de la pantalla
  • poDesktopCenter: la medida será la de creación y se posicionará en el centro de la pantalla
  • poMainFormCenter: la medida es la de creación y se centrará a la ventana principal de la aplicación
  • poOwnerFormCenter: la medida es la de creación y se centrará a la ventana escogida



delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3.   Form1.Position := poScreenCenter;
  4. end;



Podemos usar la siguiente función para centrar la ventana con sólo su Handle:



delphi
  1. procedure CenterWnd(const Wnd: HWND);
  2. var
  3.   R: TRect;
  4.   SW, SH, W, H: Integer;
  5. begin
  6.   SW := GetSystemMetrics(SM_CXSCREEN);
  7.   SH := GetSystemMetrics(SM_CYSCREEN);
  8.   GetWindowRect(Wnd, R);
  9.   W := R.Right - R.Left;
  10.   H := R.Bottom - R.Top;
  11.   R.Left := (SW - W) div 2;
  12.   if R.Left < 0 then R.Left := 0;
  13.   R.Top := (SH - H) div 2;
  14.   if R.Top < 0 then R.Top := 0;
  15.   MoveWindow(Wnd, R.Left, R.Top, W, H, True);
  16. end;