Ver Mensaje Individual
  #2  
Antiguo 01-06-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Leo la siguiente frase:
Cita:
Empezado por odiseeus Ver Mensaje
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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 01-06-2011 a las 13:30:30.
Responder Con Cita