Leo la siguiente frase:
Cita:
Empezado por odiseeus
aunque con las variables se puede usar el new, no se si se pueda algo parecido con las formas
|
Si me quedara sólo con ella, respondería que lo que te pasa es que todavía no sabes programar en C++ porque no has comprendido los conceptos de clase, tipo, objeto, objeto de clase, variable, referencia y puntero. Te recomendaría que te olvides por un tiempo de Builder y te empapases con un buen libro de programación en C++ (te recomiendo autores como Herbert Schildt y Luís Joyanes, y los libros de la editorial Anaya pero ojo
sólo los de los años noventa, porque los últimos no me gustan nada). Aun así te propongo una posible solución.
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. */
int MiFormulario::AnnadeLabel (char *TextoLabel)
{
TLabel *Objeto;
// Ahora no recuerdo cuál es el método para añadir componentes a un TForm,
// y no me apetece buscarlo.
this->addComponent (Objeto = new TLabel (this));
// Voy a suponer que usa un patrón "get/set" para las propiedades.
Objeto->setCaption (TextoLabel);
Objeto->setParent (this->PanelDeEtiquetas);
Objeto->Tag = this->CuentaElementos++;
// Ya no recuerdo cómo es la clase string, pero esto debería funcionar.
Objeto->setName ((string)("etiqueta") + itostr (Objeto->Tag));
return Objeto->Tag;
}
En principio no necesitas almacenar las referencias en ningún lugar, y que la clase TForm incluye la capacidad de almacenarlas por ti y eliminará los objetos cuando corresponda.
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.