Vector de componentes
quisiera saber si se puede hacer un vector de componentes, :confused: me haré entender mejor.
normalmente uno tiene tantos componentes como vaya colocando, pero si yo quiero que se hagan tantos componentes como fueran necesarios segun datos ingresados... Ejemplo: TLabel *Label1; TLabel *Label2; TLabel *Label3; ... Sucesivamente pero se puede hacer de alguna manera que quedara como: TLabel Label[10]; en este caso serian 10 Label, pero entonces se crearían según necesidad de los datos a ingresar como: TLabel Label[variable]; aunque con las variables se puede usar el new, no se si se pueda algo parecido con las formas, no se si la idea que tengo se pueda realizar, o lo mas aproximado posible. Gracias! |
Leo la siguiente frase:
Cita:
Por lo que sé, Builder también usa VCL, por lo que debería funcionar algo así (ojo, que lo hago de memoria y no tengo Builder para probarlo, de hecho nunca lo he usado así que no estoy seguro de cómo define los métodos y las propiedades): Código:
/* Añadir un label al formulario. */ Si necesitas obtener un objeto concreto, accede a la lista de componentes de TForm (supongo que en Builder también lo implementan) y busca por nombre o por Tag. [edito] Acaba de ocurrírseme que puedes usar realloc. |
Pongamos un ejemplo sencillo:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender) Parent: La ventana donde se mostrará el nuevo componente. Puede interesarte que la VCL tiene también la Clase TList, una clase para manejar arrays de punteros. Saludos. |
la verdad no me deja nada claro, mejor dicho, como seria el metodo para crear n cantidad de componentes Edit segun sea necesario... un componente dinamico, gracias!
ejemplo: si necesitara tomar los nombres de ciudades visitadas y en componente Edit ingresaran una cantidad, ejemplo 6 a continuacion mostrara 6 componenetes Edit para ingresar en cada uno un nombre de ciudad, y en la siguiente ejecucion fueran 8 mostrara los 8 componentes necesarios, pero que no haya necesidad de hacerlos uno a uno si depronto se llegan a necesitar mas o menos no sea problema!...gracias por la colaboracion! |
Hola.
No entendí bien lo que preguntaste en tu primer mensaje. Pero ahora, luego de leer el segundo, me parece que es lo que te contesto escafandra. Por ejemplo: Código:
void __fastcall TForm1::CrearEdits(int Cant) Ejemplo de llamada que crea 10 TEdit: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) Saludos. |
que pena no haberme hecho entender bien desde un principio, pero es exactamente como lo explicaste ecsifa... muchas gracias!... completamente útil tu colaboración!... Gracias!
|
que pena preguntar tanto, pero después de varios y distintos intentos a lo cual no he podido, como se hace para eliminar o destruir los mismos componentes creados en la explicación anterior? gracias.
|
Cita:
Cita:
Saludos. |
ok el owner se encarga eliminar los componentes al terminar la ejecución del formulario! (entendido)... pero si se crean en tiempo de ejecución, como destruyo esos mismos en tiempo de ejecución?, sin ser necesario finalizar el formulario. gracias!
|
Hola odiseeus.
Una forma puede ser: Código:
... |
nuevamente mil gracias! ecfisa, siempre he dicho que es grandioso tener un conocimiento, pero realmente ingenioso es saberlo trasmitir!... y en este foro si que lo saben hacer!.. mil gracias de nuevo!.. éxitos!
|
hola de nuevo, una preguntas mas, si quiero acceder a una de las propiedades de los Edit creados en el ejemplo anterior, como seria, pues no puedo colocar ej:
Código:
Edit1->Text = "texto1"; |
Hola odiseeus.
Podes acceder por el método FindComponent, por ejemplo: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { |
La franja horaria es GMT +2. Ahora son las 20:59:45. |
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