 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 25 Abr, 2018 6:02 pm Asunto: Creación de objetos dinámicos |
|
|
A ver si soy capaz de explicarme. Tengo un formulario que empleo para actualizar varias tablas similares; en algunos casos me hace falta un TComboBox y en otros no. Ahora mismo cuando creo el formulario creo los objetos de forma dinámica; hasta ahí sin problema. El problema me surge cuando tengo que encontrar dichos objetos para, por ejemplo, ver que ítem se ha seleccionado en el combo correspondiente. ¿Cómo puedo encontrar esos objetos que he creado de forma dinámica?
El código que uso para crearlos es este:
| Código: | LabeledEdit = new TLabeledEdit(Panel4);
LabeledEdit->BevelInner = bvNone;
LabeledEdit->BevelKind = bkFlat;
LabeledEdit->BevelOuter = bvLowered;
LabeledEdit->BorderStyle = bsNone;
LabeledEdit->EditLabel->Caption = cComponent[nItem][8];
LabeledEdit->EditLabel->ParentFont = true;
LabeledEdit->EditLabel->Font->Style = TFontStyles() << fsBold;
LabeledEdit->Height = StrToInt(cComponent[nItem][5]);
LabeledEdit->Left = StrToInt(cComponent[nItem][3]);
LabeledEdit->MaxLength = StrToInt(cComponent[nItem][7]);
LabeledEdit->Name = cComponent[nItem][2];
LabeledEdit->Parent = Panel4;
LabeledEdit->ParentFont = true;
LabeledEdit->Text = "";
LabeledEdit->Top = StrToInt(cComponent[nItem][4]);
LabeledEdit->Width = StrToInt(cComponent[nItem][6]); |
Como decía uso el formulario para varias tablas similares y ese vector cComponent está declarado al principio así:
| Código: | AnsiString cComponent[][9] = {{"1" , "1", "Nombre" , "5" , "20" , "20", "260", "30", "Afiliación"},
{"2" , "1", "Codigo" , "5" , "20" , "20", "50" , "4" , "Código"}, // TLabeledEdit
{"2" , "1", "Nombre" , "5" , "58" , "20", "330", "65", "Entidad bancaria"},
{"2" , "1", "Bic" , "340", "58" , "20", "140", "11", "B.I.C."},
{"3" , "1", "Nombre" , "5" , "20" , "20", "260", "30", "Cargo"},
{"3" , "2", "" , "270", "4" , "" , "" , "" , "Proeso Electoral"}, // TLabel
{"3" , "3", "Proceso" , "270", "20" , "20", "260", "" , ""}, // TComboBox |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mie 25 Abr, 2018 8:03 pm Asunto: |
|
|
Usa FindComponent
Saludos. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 26 Abr, 2018 8:32 am Asunto: |
|
|
| escafandra escribió: | Usa FindComponent
Saludos. |
Ya lo he probado y no lo encuentra.
| Código: | nItem = 0;
while (cComponent[nItem][0] != "")
{
if (StrToInt(cComponent[nItem][1]) == 3)
{
Source = this->FindComponent(cComponent[nItem][2]);
if (Source != NULL)
{
[Codigo que me hace falta]
}
}
nItem ++;
} |
La tercera coordenada del vector es la propiedad Name del objeto. Al ejecutar ese bucle while, Source no encuentra nunca el componente y no entra por el código. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Dom 29 Abr, 2018 12:04 am Asunto: |
|
|
Utiliza ComponentIndex y lo guardas en el Tag del componente, ejmplo:
| Código: |
LabeledEdit = new TLabeledEdit(Panel4);
//Utiliza la propiedad Tag para guardar el numero de Componente
Panel4->Tag = LabeledEdit->ComponentIndex;
//.............................
//Luego utiliza el Tag en un bucle para localizar el ComponentIndex del OBJETO y poder hacer lo que desees
delete ((TLabeledEdit*)Components[Panel4->Tag]);
|
_________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|