Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2008
chinchan chinchan is offline
Miembro
 
Registrado: abr 2006
Posts: 109
Poder: 18
chinchan Va por buen camino
Punteros a objetos

Hola, en un programa c++ Builder, tengo una matriz con 60 objetos TPanel y en ejecución les tengo que dar nombre (Panel1->Caption), pero como es lógico no quiero llamar uno a uno. ¿Cómo se puede hacer de una manera sencilla?. Es decir:
en vez de
Panel1->Caption="1";
Panel2->Caption="2";
Panel3->Caption="3";
etc..

algo así:

for(a=1;a<=60;a++){
Panel[a]->Caption=a;
}

Gracias.
Responder Con Cita
  #2  
Antiguo 05-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Pues esa parece la forma más razonable de hacerlo. Fíjate en este código. Las matrices en C comienzan en el elemento "CERO"

Código:
 for(a=0; a<60; a++){
   Panel[a]->Caption = IntToStr(a);
}

Creando, además los TPanel:

Código:
TPanel Panel[60];
for(a=0; a<60; a++){
   Panel[a] = new TPanel(this);
   Panel[a]->Caption = IntToStr(a);
}
Recuerda destruirlos (delete) cuando no los necesites.

Saludos.
Responder Con Cita
  #3  
Antiguo 05-05-2008
chinchan chinchan is offline
Miembro
 
Registrado: abr 2006
Posts: 109
Poder: 18
chinchan Va por buen camino
no se crear los TPanel

Aquí tengo el problema, que no se crear los TPanel
al escribir el código:

TPanel Panel[60];

me da un error.
Responder Con Cita
  #4  
Antiguo 05-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si, no te lo explique lo suficientemente y asumí que sabias que NO puedes crear directamente una matriz de objetos VCL sino una matriz de punteros a objetos VCL (Un puntero a puntero)

Para crear:

Código:
  TPanel** Panel = new TPanel*[60];
  for(int a=0; a<60; a++){
    Panel[a] = new TPanel(this);
    Panel[a]->Caption = IntToStr(a);
  }
Tienes varias formas de destruir la matriz, la mas intuitiva es esta:

Código:
   for(int n=0; n<60; n++){
      delete Panel[n]; //Destruyes cada objeto
   }
   delete Panel;  // destruyes el puntero a 60 punteros
Saludos.

Aclaración:

Creo los TPanel así new TPanel(this) asumiendo que this es un form (osea un TComponent*) En caso contrario, que this no sea un TComponent* fallará

Última edición por escafandra fecha: 05-05-2008 a las 21:39:27.
Responder Con Cita
  #5  
Antiguo 06-05-2008
chinchan chinchan is offline
Miembro
 
Registrado: abr 2006
Posts: 109
Poder: 18
chinchan Va por buen camino
Ok, muchas gracias. Me ha valido perfectamente.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
uso de punteros David OOP 19 14-12-2009 10:48:37
Olvidar liberar punteros, objetos, etc. walito Varios 3 06-01-2008 02:51:47
Punteros davitcito Varios 2 25-04-2005 23:46:24
Punteros rafadrover OOP 8 18-09-2003 11:09:47


La franja horaria es GMT +2. Ahora son las 21:46:53.


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
Copyright 1996-2007 Club Delphi