![]() |
Crear y Borrar componentes en tiempo de ejecución
Hola amigos tengo en una forma un SpinEdit y segun el numero que vaya seleccionando el usuario voy creando una etiqueta, un cuadro de texto y un calendario (al momento solo he provado con crear las etiquetas). Cuando se aumenta el valor en el SpinEdit en tiempo de ejecución se crean las etiquetas restantes, es decir si spinedit es 0 y el usuario sellecciona 2 se crean dos etiquetas, y si despues el usuario selecciona 3 solo se crea una etiqueta mas, el problema lo tengo cuando el usuario disminuye el valor del SpinEdit por ejemplo de 3 a 2 no logro eliminar la etiqueta sobrante, les anexo el código a ver si me pueden ayudar.
Segun yo buscando en el foro solo encuantro como crear componentes no como borrarlos :confused: |
La verdad no he probado muy bien este codigo pero me supongo que puedes jugar con lo siguiente:
Espero te sirva ;) |
1 Archivos Adjunto(s)
Hola,
A mí a bote pronto se me ocurre que uses variables "TObjectList", de tal forma que puedas ir guardando una referencia a cada objeto que creas, y puedas destruir estos según te sea menester. El código de más abajo está escrito en un momento, no me he parado mucho en el mismo, pero, como puede verse en el ejemplo que adjunto, aparentemente, al menos, consigue más o menos lo que te propones: ciñéndome en el ejemplo a unas cuantas "TLabel". Eres libre de mejorarlo y modificarlo como mejor te parezca. Si algún error de bulto hay, por favor, nadie se prive en comunicarlo. Gracias. ;)
|
Gracias a los dos por su ayuda les comento que la solución de jhonny si borraba pero solo los cuadros de dialogo y las datetimepicker, con la solución de dec fue lo que yo intentaba hacer solo le aumente el codigo para tambier crear los cuadros de dialogo y las datetimepicker.
Nuevamente Gracias |
Por cierto le aumente en la parte de creación del componente le aumente el comando:
debido a que como la forma ya tiene otras etiquetas y no siempre tienen un nombre progresivo (label1, label2, etc.) daba error en el nombre del componente y con esto cambio fue mas que suficiente |
Si vas a necesitar siempre el Tedit, el label y el calendario:
Create un Tframe con esos 3 componentes dentro. Despues solo tendrás que crear un nuevo TFrame y tendrás casi todo hecho. PD: Para liberar un componente en tiempo de ejecución, usa FreeAndNil(nombreComponente). Al crear los labels con el parámetro "Self" estas diciendo que los libere el formulario; si los destruyes tú, cuando el form intente destruirlos te dará un AccessViolation, ya que .Free no deja la variable apuntando a nil |
Gracias Lepe, ya tengo el formulario funcionando con la ayuda de Dec, pero tendre en cuana la tuya para futuros cambios
|
La franja horaria es GMT +2. Ahora son las 12:51:58. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi