Centrar la ventana en la pantalla
Artículo por Club Developers · 01 marzo 2006
5060 vistas
Para realizar el centrado del formulario, usaremos la opción Position de éste y que puede tomar varios valores:
Podemos usar la siguiente función para centrar la ventana con sólo su Handle:
- 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
procedure TForm1.FormCreate(Sender: TObject); begin Form1.Position := poScreenCenter; end;
Podemos usar la siguiente función para centrar la ventana con sólo su Handle:
delphi
procedure CenterWnd(const Wnd: HWND); var R: TRect; SW, SH, W, H: Integer; begin SW := GetSystemMetrics(SM_CXSCREEN); SH := GetSystemMetrics(SM_CYSCREEN); GetWindowRect(Wnd, R); W := R.Right - R.Left; H := R.Bottom - R.Top; R.Left := (SW - W) div 2; if R.Left < 0 then R.Left := 0; R.Top := (SH - H) div 2; if R.Top < 0 then R.Top := 0; MoveWindow(Wnd, R.Left, R.Top, W, H, True); end;