FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
componentes en tiempo de ejecución
Hola!!!
una pregunta... mirad, creo en tiempo de ejecución creo unos componentes dentro de una ventana en mi aplicación. Al cerrar y volver a abrir la ventana me da error porq me dice q los componentes ya estan creados. Como se hace para destruirlos(o algo así) cada vez que se cierre la ventana(o antes de crearlos)? Yo los creo así: p[i]:=Tpanel.Create(self); ... p[i].ParentWindow:=Ppal.Handle; ... bueno...espero haberme explicado Gracias. Un saludo |
#2
|
|||
|
|||
Tienes q destruir la form tb; FreeAndNil(form1)
|
#3
|
||||
|
||||
lo que sucede es que si trabajas con formularios normales, eso quiere decir que no se destruyen al cerrarse tendrias que destruirlos tu, si colocas el owner de los componentes como self eso quiere que el formulario se encarga de destruirlos antes de destruirse el, la solucion que se me ocurre es la siguiente:
Mostrar el formulario tipo modal y destruirlo despues de la ejecución:
Destruir los componentes en el evnto onClose del formulario
Suerte espero te sirva
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#4
|
||||
|
||||
Gracias
probaré a ver que tal
|
#5
|
||||
|
||||
no funciona
no se que es eso del modo modal ,pero bueno
FreeandNil(MiForm.Controls[0]);<---esto me da error y freeAndNil(Fcentral); lo he puesto pero sigue sin funcionar no sé...seguiré intentando un saludo |
#6
|
||||
|
||||
Cita:
Cita:
Cita:
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#7
|
||||
|
||||
Pues no entiendo yo esto....
Si al crear los controles le dices que el owner es el Form, la ventana se engargaría de destruirlo no?? Creo que lo único que habría que hacer en el onClose, además de poner action := CaFree, sería poner a nil la matriz de controles p La matriz p está situada en la misma ventana o en otra distinta¿? Tampoco entiendo por qué usas Parentwindow, ¿no se debería usar simplemente la propiedad Parent? Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
||||
|
||||
jajjaja
la matriz esta dentro del propio formulario...
yo tampoco sé porq uso algunas cosas... bueno, voy a ver si me aclaro y ahora os cuento gracias |
#9
|
||||
|
||||
lepe
lo estoy intentando como tu dices
pero mi matriz es estática.No me deja ponerla a nil ah por cierto ya me he dado cuenta de que lo de parentwindow era un tonteria como vacio de componentes las matrices dinámicas ... perdonadme, hoy estoy un poco... gracias un saludo |
#10
|
||||
|
||||
ya!!!
ya funciona bien(o eso parece)
lo que he hecho es crear los componentes en el formshow y no en el create,y en el evento onclose,he recorrido los arrays(son estáticos) y he ido haciendo p[i].destroy; edt[i].destroy; ... así cuando cierro y vuelvo a abrir la ventana no pasa nada raro. No se si era la mejor solución pero al menos ya hace lo que quiero Lepe ¿que es lo de CaFree? oye, muchas gracias |
#11
|
||||
|
||||
Reholas,
Para crear los paneles: Estoy diciendo que nadie se encargue de liberar los paneles, ya que nosotros lo haremos manualmente. Y al cerrar la ventana:
caFree, es el valor del parámetro CloseAction del evento OnClose de la ventana. Cuando una ventana se cierra, bien por código o bien pulsando la X de la ventana, se llama a ese evento, despues se comprueba si hay código en el evento OnCloseQuery, y por ultimo se ejecuta el código existente en el evento OnClose. Modificando el parámetro CloseAction, puedes modificar el comportamiento de la ventana al cerrarse. Los valores posibles son: Código:
caMinimize = al pulsar sobre la X, la ventana, se minimiza. caHide = se oculta cafree = se libera la ventana de memoria, y todos los recursos asociados caNone = la X no hace nada
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#12
|
||||
|
||||
ahora tengo otro problema
cuando cierro el formulario me da un error en otro evento en el que trabajo con componentes de estos que he liberado...voy a repasar todo otra vez
q desastre soy... |
#13
|
||||
|
||||
Si trabajas de esta forma, siempre que vayas a acceder a p[i] deberías preguntar si es distinto de nil, para que no traspases un puntero nulo.
Perdona por no haberlo comentado en el post anterior Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#14
|
||||
|
||||
aii
ya por fin!!!gracias lepe
|
|
|
|