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 

FindComponent y los Frames creados dinamicamente

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: FindComponent y los Frames creados dinamicamente Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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))  );

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
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.