Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Eliminar una serie de Objetos creado en tiempo de ejecución

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Eliminar una serie de Objetos creado en tiempo de ejecución Responder citando

Hola buen día a toda la comunidad. Mi problema es que no puedo eliminar (delete) una serie de objetos de tipo Label que he creado en tiempo de ejecución. Explico

Utilizo en mi aplicación 2 buttons y 1 ScrollBox1

Declaro mis variables en el .h de mi forma en public

int j; //se refiere a la propiedad Top del Label
AnsiString num_objetos; //guardada un numero al azar entre 1 - 10
AnsiString k; //concatenara el valor que tenga k con el nombre del Label que se este generando en tiempo de ejecución
TLabel *Label; //Objeto de tipo Label


Coloco dos Button en mi forma. El primero es para crear mis objetos en tiempo de ejecución de tipo Label. El número de objetos a crear depende del random el cual lo coloco en la variable “num_objetos” y posteriormente los empiezo a mostrar dentro de un ScrollBox1. Como se muestra a continuación:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
randomize();
num_objetos = random (10);

for(int i=0; i "menor" num_objetos; i++)
{
Label = new TLabel(this);
Label->Parent = ScrollBox1;
Label->Name = "Nombre_variable"+k;
Label->Caption = Label->Name;
Label->Top = j;
j = j + 25;
k = k + 1;
}
}

Hasta ahí todo bien, el problema viene cuando quiero eliminar esa seria de objetos que me creo, lo cual es cuando ocupo el segundo Button

void __fastcall TForm1::Button2Click(TObject *Sender)
{
k = 0;
for(int i=0; i "menor" num_objetos; i++)
{
delete Label; //aquí me elimina el ultimo objeto creado
Label->Name = "Nombre_variable"+k; //aquí el error. Trato de hacer referencia al primer objeto creado y eliminarlo
k = k + 1;
}
}


NOTA: en el for hay una palabra de dice "menor" la sustituyen por el simbolo < ya que me sacaba cosas raras.

Les agradeceria y me pudieran apoyar en esto. Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Dos cosas.
Primera:
Deshabilita HTML en los mensajes, así el texto del código no se corrompe al publicarlo en el foro. La opción la tienes en tu perfil o debajo de la ventana de edición de mensajes.

Segunda:
Si haces delete Label, no puedes usar más ese Label, no existe. Utiliza FindComponent para encontrar un puntero a tu label.

Mira este ejemplo:

Código:
TLabel *L = (TLabel*)FindComponent("Nombre_variable" + IntToStr(k));
if(L) delete L;


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias "escafandra" me la salio a la perfección.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.