SoloCodigo
Programación General => Delphi => Mensaje iniciado por: Vika en Domingo 9 de Mayo de 2004, 16:32
-
Pue sel problema no es muy complicado creo, pero mis conocimientos son un poco bajos, je. La cosa es q quiero q al maximizar el formulario los controles sigan en el centro, xa q kede mas bonito vamos. Creo q debo utilizar Onresize pero no se muy bien que tengo q hacer. Me podriais echar una mano??
-
Hola, este es el primer post que escribo, a ver si te sirvo de ayuda y me estreno con buen pie :rolleyes:
Hace apenas unas meses que uso Delphi, pero estoy muy contento con el lenguaje. Posiblemente, exista la propiedad "Anchor", como en VB.Net, que ajusta los elementos vertical y horizontalmente a los laterales del formulario que los contiene, para que al hacer un resize de la ventana mantengan la relación de tamaño, pero yo no la he encontrado. Aún así, tú comentas de mantener los objetos de un formulario en el centro al maximizar/restaurar; yo te comento como hacer que se mantengan centrados en pantalla, y tú ya juegas con ello en función de tus necesidades. El truco está en establecer las propiedades top y left de los objetos al centro de la pantalla menos la medida media del objeto en sí; que lio, ¿verdad? Pues mira, haz esto: pon todos los controles del formulario en un panel, y escribe el código este en el evento OnResize del formulario:
pnlPanel.Top := (Screen.Height / 2) - (pnlPanel.Height / 2);
pnlPanel.Left := (Screen.Width / 2) - (pnlPanel.Width / 2);
De esta manera se centrará el panel en pantalla siempre que se produzca un resize :lol:
-
asi es, la propiedad Anchors si existe para todos los controles visuales, basicamente lo unico que tienes que hacer es jugar con 2 propiedades
Align y Anchors
Align te permitira poner el componente arriba, abajo, izquierda, derecha o completa (client)
y cuando maximizas, o haces resize, los controles se mueven acordemente
cuando cambias Align los Anchors automaticamente se cambian, pero tu los puedes cambiar tambien, solo hay 4 propiedades aqui, akLeft, akTop, akRight, akBottom, basicamente cuando estan a True, quiere decir que el control se va a cambiar de tamaño cuando ese lado cambie (izq, derecha, arriba, abajo)
juega con esas propiedades
otra cosa muy comun es usar paneles para agrupar todos tus componentes, incluso se usa mucho tener paneles dentro de paneles... por ejemplo, una aplicacion puede tener un panel con Align alTop para todos los componentes que siempre van arriba en tu form, y otro panel con Align alClient para todo el detalle
dentro del panel con alClient puedes tener otros paneles con alLeft, otro con alClient, etc... prueba eso y veras como todos tus componentes se mueven acordemente como tu quieres...