| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Vie 08 Sep, 2006 11:07 am Asunto: FindComponent y los Frames creados dinamicamente |
|
|
Hola amigos:
Tengo un PageControl al cual le voy creando los TabSheet dinámicamente.
A cada TabSheet le inserto un Frame que es un formulario.
Puedo acceder a un componente del formulario por ejempo con;
Ficha[x]->Edit1->Text
Ahora lo que yo quiero es recorrer todos los Campos Edit del formulario e insertar los datos en un StringList, por ejemplo.
Para ello utilizo la función FindComponent,
TEdit * Componente;
Componente=(TEdit *)FindComponent("Ficha["+AnsiString(numFicha)+"]->Edit"+AnsiStrin(numEdit));
Con lo que esto debería devolver una instruccion tal cual esta:
Componente = (TEdit *)FindComponent("Ficha[1]->Edit2");
Pues bien, me devuelve Null lo escriba como lo escriba, ya sea escribiendo la cadena directamente o como sea.
Si intento acceder al valor de Ficha[1]->Edit2->Text, no tengo problema, el problema se crea al utilizar FindComponent.
En mi programa utilizo FindComponent, pero solo con FindComponent("Edit"+AnsiString(NumEdit)) y sin problemas.
Donde radica el problema? _________________ La pintura es la expresión de la mente. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 08 Sep, 2006 6:15 pm Asunto: |
|
|
TEdit * Componente;
| Código: | Componente= dynamic_cast<TEdit*> ( (TEdit *)FindComponent("Ficha["+AnsiString(numFicha)+"]->Edit"+AnsiString(numEdit)) ); |
o bien
| Código: | Componente= reinterpret_cast<TEdit*> ( (TEdit *)FindComponent("Ficha["+AnsiString(numFicha)+"]->Edit"+AnsiString(numEdit)) ); |
_________________
 |
|
| Volver arriba |
|
 |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Lun 11 Sep, 2006 7:26 am Asunto: |
|
|
No me funciona, ni con reinterpret_cast ni con dynamic_cast
Sigue Asignando Null al Componente.
He decidido hacerlo insertando una línea de código por componente
| Código: |
TStringList * Parametros;
Parametros = new TStringList();
Parametros->Add(Pagina[NumLlamada]->Edit1->Text);
Parametros->Add(Pagina[NumLlamada]->Edit2->Text);
Parametros->Add(Pagina[NumLlamada]->Edit3->Text);
Parametros->Add(Pagina[NumLlamada]->Edit4->Text);
Parametros->Add(Pagina[NumLlamada]->Edit5->Text);
...
Parametros->Add(Pagina[NumLlamada]->Edit18->Text);
|
Haciendo esto, no tengo problema. Pero si intento acceder con FindComponent me devuelve NULL en Componente
| Código: |
for (vcb=1;vcb<=18;vcb++)
{
Componente= reinterpret_cast<TEdit*> ((TEdit *)FindComponent("Pagina["+AnsiString(NumLlamada)+"]->Edit"+AnsiString(vcb)));
Parametros->Add(Componente->Text);
}
|
Qué puede pasar? _________________ La pintura es la expresión de la mente. |
|
| Volver arriba |
|
 |
|