2012-09-27 19 views
13

¿Cómo puedo centrar un control dentro de su elemento primario? ¿Y cómo mantenerlo centrado cuando los padres cambian de tamaño?Anclajes: = [akCenter]?

Sé que podría escribir un controlador de eventos Parent.OnResize para mover el control manualmente, pero no todos los componentes del contenedor tienen un evento OnResize, y me gustaría hacer esto automáticamente.

¿Hay un ancla de akCenter?

+1

Al cambiar el diseño en el evento OnResize se produciría un parpadeo. Necesitamos volver a calcular el diseño antes de que se vuelva a dibujar el formulario. – truthseeker

Respuesta

24

El ancla akCenter no existe. Pero puede imitar akRelative configurando la propiedad anclas vacía, lo que produce un movimiento relativo del control cuando el tamaño cambia. Combinar eso con la colocación centrada dará como resultado un "ancla" centrada.

Para centrar horizontalmente en tiempo de diseño:

  • En el IDE, elija el menú de contexto del control (clic derecho),
  • Posición> Alinear> Horizontal> Centro de Ventana,
  • Establezca Anchors.akLeft := False, Anchors.akRight := False en el inspector de objetos,
  • y voilà: akHorzCenter.

Lo mismo ocurre con la vertical, en cuyo caso establece akTop y akBottom falso. Para centrar en ambas direcciones: Anchors := [].

Animation of akRelative in action

Negación: no he encontrado la documentación de esta ancla uso y no sé si este es el funcionamiento previsto, pero funciona muy bien en D7, así como en XE2.

+5

+1 Esto es bueno y gracias por enseñarme algo nuevo que no sabía. –

Cuestiones relacionadas