Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Centrar un frame sobre un panel en tiempo de ejecución (https://www.clubdelphi.com/foros/showthread.php?t=41111)

Albano 07-03-2007 20:45:17

Centrar un frame sobre un panel en tiempo de ejecución
 
Hola a todos, tengan un buen día.
Quiero centrar un frame que puse sobre un panel cada vez que ajuste el tamaño de mi forma, o sea en el evento "onResize" del formulario (la propiedad "align" del panel esta en "alclient"). Mi idea es hacerlo de la siguiente manera:
En el evento onResize, tomar las propiedades width y height del panel y ponerlas en una variable cada una. A estas variables le resto las propiedades width y heigth de mi frame y el resultado lo divido entre 2. La parte entrea de estos resutlados las tomo como left y top respectivamente para el frame.
Esa es mi intención, pero tengo el problema de que el frame lo creo en tiempo de ejecución y en el evento onResize del formulario no me detecta este componente. Puedo hacer el proceso mencionado al momento de crear el frame y todo bien, me aparece centrado, pero si ajusto la medida del formulario, ya no queda centrado.
Gracias de antemano, Dios los bendiga.

Lepe 07-03-2007 21:57:34

Crea el Frame en ejecución, después de asignar las dimensiones que debes tener, aplica los Anchors a dicho frame, es decir, todos los Anchors a True.

En principio, ya no deberías tocar el evento OnResize para nada, ya se encargará Delphi.

Saludos

Albano 07-03-2007 22:47:40

Hice lo que me dijiste Lepe y no hace lo que quiero... lo que creo que hace es modificar las propiedades width y height del frame, por lo que mi frame se va desapareciendo conforme hago mas chico el formulario en lugar de irse moviendo. Las propiedades que tendría que modificar son top y left.
Hice algo mal?

roman 07-03-2007 23:11:39

Según lo que describes, me parece que estás haciendo todo correctamente desde un principio, es sólo que te falta, por decirlo de algún modo, de dónde tomar el frame. Aun cuando lo crees por código, el frame está ahí, aunque sea en el arreglo Controls del Panel. De cualquier forma, podrías usar una varibale privada para guardar una referencia al frame, ¿no?

// Saludos

Albano 07-03-2007 23:47:16

Gracias Roman, no entiendo que estaba haciendo en un principio que no me apareciía la opción, tal vez tenia algun otro error y ahi es donde me di cuenta, pero tenias razón, todo estaba bien, funcina como había dicho en un principio.


La franja horaria es GMT +2. Ahora son las 16:38:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi