 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
CALI Invitado
|
Publicado: Vie 20 Sep, 2002 11:18 pm Asunto: CREACION DE COMPONENTES EN TIEMPO DE EJECUCION |
|
|
HOLA AMIGOS,
Les escribo esto esperando que alguien pueda ayudarme, necesito saber como puedo crear un componente en tiempo de ejecucion, es decir no tener que ponerlo en el formulario en tiempo de diseño, sino crearlo mediante codigo.
Gracias. |
|
| Volver arriba |
|
 |
Andrés Lt JG


Registrado: 30 Ago 2002Mensajes: 62Ubicación: Ramos Mejía
|
Publicado: Sab 21 Sep, 2002 2:59 am Asunto: |
|
|
No te sirve ponerlo y dejarlo invisible? Y cuando quieras lo ponés visible y listo. _________________ "Todo es posible si Ud. no sabe de qué está hablando" |
|
| Volver arriba |
|
 |
Joaquín Cdt

Registrado: 18 Sep 2002Mensajes: 2
|
Publicado: Dom 22 Sep, 2002 12:47 am Asunto: |
|
|
La opción de Andrés está bien, además te permite crear nuevos componentes del mismo tipo, y tener un acceso indexado, a partir de ese.
Por ejemplo, en un programa que estoy diseñando he creado un componente visual (TPersona) que es un círculo con la imagen de una persona, entre otros datos. En el formulario tengo uno, visible=false, con las principales opciones por defecto, verás durante la respuesta que la propiedad Name - Persona1-, es lo de menos, se introduce en el formulario para evitar problemas en la compilación.
Para crear nuevos componentes, por ejemplo X, tengo lo siguiente:
Sj = new TPersona *[x];
Sj está en la definición,creo que se dice así, del programa (en mi caso principal.h), como puntero a puntero TPersona** Sj;
luego tienes que introducir los datos de cada componente:
for(int kk=0;kk<x;kk++)
{ Sj[kk]->Nombre= Miembro[kk].Name; \\...
Sj[kk]->Parent= Fondo->Parent; }
Fondo es otro componente del formulario, un TImage. En realidad en esta sentencia asignamos a nuestro control el mismo contenedor del control Fondo,
ES IMPORTANTE asignar a los controles que crees en tiempo de ejecución un contenedor, yo utilizó fondo porque es un TImage donde dibujo junto los TPersona.
Por supuesto un Sj[kk]->Visible = true; deberás poner si los quieres ver.
Recuerda que toda variable creada con new debe eliminarse con delete si no quieres tener problemas de Access Violation y similares; en este caso en FormClose tengo:
if (Sj!=NULL)
{ int b = Sj[0]->Tag;
for(int i= 0; i<b; i++) delete Sj[i]; \\ primero borra los X TPersona*
delete []Sj;\\segundo, borra el TPersona**
}
Utilizo la propiedad Tag del primer componente para almacenar los X componentes creados en tiempo de ejecución, se supone que uno no sabe cuantos tendrá, sino lo haría durante el diseño.
Espero haber sido claro y didáctico, soy un aficionado y desconozco muchos términos técnicos y otras cosas, algunas de las cuales he colgado en el foro, pasan los días y nadie me contesta  |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|