FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Hola ecfisa, la verdad es que como tu dices, todo seria mas sencillo si le doy Owner, el Owner como tu dices seria el panel, el scrollbox nunca se destruye, la idea es ir creando varios TPanel cuando se necesiten, y dentro del panel ira el frame, y claro, también esta la posibilidad de eliminar ese panel, con el frame, claro está, haciéndolo de la forma que tu dices, pasando como parámetro al Create el panel imagino que haciendo un
sería suficiente para no tener que hacer nada con el frame, que lo eliminará su propietario. Gracias!!! |
#2
|
||||
|
||||
Llego 5 días tarde, pero en fin, daré mi opinión, ya que me doy por aludido en el tema.
Cuando he estado en una situación similar (scrollBox con Tframes), la forma más rápida de sincronizar ambos es: - Los frames y paneles con Owner al ScrollBox - Al borrar un panel, refrescar todo , es decir, hacer un scrollbox.DestroyComponents (que no debería usarse... pero está ahí para ser usado ), y después inicializar el array (poniendo los frames del array a nil, ya que el ScrollBox los liberó). Por ultimo, creo todos los paneles/frames de nuevo. Otro método (sería lo suyo, pero implica más trabajillo), usar el Notification, me explico: Cuando un componente del Form se va a liberar, informa a su dueño (si lo tiene) de este hecho, de forma que el dueño, no intentará liberarlo cuando se cierre. Ejemplito: Un form con un botón y un TEdit, en el botón pones el código "edit1.Free". Ejecutas el proyecto, pulsas el botón (el Edit desaparece del Form) y cierras el proyecto con la X roja. No produce ningún error, porque el Edit informó al Form que se iba a liberar y ya el Form lo quitó de su lista de componentes que controla su destrucción. Si el Form intenta liberar por segunda vez el Edit,daría un Access Violation. Solo hay un problema: que tu array se entere que el componente frame se ha liberado. Para eso, puedes guardar en el Frame.Tag el índice donde se encuentra en vLista. No tenemos ese código, pero en algún momento harás algo así: vLista[n].vFrame := FrameRecienCreada; pues agregas otra línea: FrameRecienCreada.Tag := n ; Y ahora en el form, añades lo siguiente:
Saludos!
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Acceder desde un WebBrowser a un frame que esta dentro de otro frame. | deneus | Delphi para la web | 1 | 25-10-2014 17:51:58 |
Como liberar el qreport | ingabraham | Impresión | 2 | 28-01-2009 01:38:23 |
mostrar frame como modal | peccatum | Varios | 19 | 05-06-2008 19:18:23 |
Como saber si me frame esta creado en cierto evento? | Albano | OOP | 2 | 15-03-2007 23:13:44 |
Como acceder a los componentes de un frame? | CORBATIN | OOP | 7 | 25-07-2003 20:24:23 |
|