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

Registrado: 06 Dic 2004Mensajes: 24Ubicación: A Coruña
|
Publicado: Mar 31 May, 2005 9:05 am Asunto: Acceder a componentes creados dinámicamente |
|
|
Hola a todos, tengo un pequeño problema. Tengo un formulario en el que hay un page control con un TTabSheet, y yo puedo crear y/o eliminar TTabSheet dinámicamente pinchando en un botón. Dentro de cada TTabSheet creo dos etiquetas y dos TDateTimePicker a uno de estos le pongo el tag a 1 y al otro a 0 para distinguirlos
Bien, el tema es que cuando quiero obtener los valores de estos TDateTimePicker lo que hacía era recorrer las páginas de y dentro de cada página tenía pensado recorrer los componentes de éste y si son del tipo TDateTimePicker en función del tag lo guardaría en un campo o en otro. El problema viene porque cuando accedo a la propiedad ComponentCount de la página me dice que es 0, que no hay ninguno. Os dejo el código que utilizo para crear los componentes a ver si veis algo raro (lo hago de memoria con lo que podría haber algún error)
| Código: | dtInicio = new TDateTimePicker(TabSheet);
dtFin = new TDateTimePicker(TabSheet);
dtInicio->Tag=0;
dtFin->Tag=1;
// código para posicionar y redimensionar los componentes
dtInicio->Parent=TabSheet;
dtFin->Parent=TabSheet |
creo que eso es lo más relevante, ¿tendría que hacer algo más para que lo considerara un componente de la hoja?En caso de que no se pueda hacer ¿la única solución sería recorrer todos los componentes del formulario y buscar los TDateTimePicker y de ellos coger la hoja (en función de la hoja lo guardaré en un sitio o en otro)?Se les ocurre otra manera? |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Mar 31 May, 2005 10:07 pm Asunto: |
|
|
Hola xaquin,
la idea de la solución que te planteo es capturar la fecha en el momento que esta es seleccionada, manejando el Sender del componente utilizado.
Me base en tu ejemplo para crear los componentes y todo bien.
Al final de tu codigo le agregue dos líneas
| Código: |
dtInicio->OnChange = DateTimePickerChange;
dtFin->OnChange = DateTimePickerChange;
|
La función que ves arriba definida DateTimePickerChange es una función que tenes que definir vos, en tu parte privada o publica del formulario asi:
| Código: |
TDate ini, fin;
void __fastcall DateTimePickerChange(TObject *Sender);
|
Tambien definí, dos variables (ini, fin) que van a capturar la fecha selecionada.
Por último implementas la función que captura el evento DateTimePickerChange:
| Código: |
void __fastcall TForm1::DateTimePickerChange(TObject *Sender)
{
TDateTimePicker* DateTimeActual = dynamic_cast<TDateTimePicker*>(Sender);
if (DateTimeActual->Tag)
fin = DateTimeActual->Date;
else
ini = DateTimeActual->Date;
}
|
En resumen, lo que digo es que cuando, se genere el evento OnChange de cualquier componente creado dinámicamente me llame a mi método DateTimePickerChange.
Dentro del metodo hago un cast para convertir el Sender en un TDateTimePicker y poder tomar la fecha. La almaceno de acuerdo a su tag como vos querias
Espero que te sirva para basarte en esto
Suerte |
|
| Volver arriba |
|
 |
Crandel Lt


Registrado: 31 May 2005Mensajes: 94Ubicación: Argentina
|
|
| Volver arriba |
|
 |
xaquin Cdt

Registrado: 06 Dic 2004Mensajes: 24Ubicación: A Coruña
|
Publicado: Mar 31 May, 2005 10:23 pm Asunto: |
|
|
Muchas gracias por la respuesta, no lo había pensado y me hubiera servido, pero al final lo solucioné porque era un error de concepto, resulta que lo que había dentro del TabSheet no eran componentes, sino controles, con lo que sólo tengo que recorrer los controles que hay en el TabSheet y en función del tag cojo los valores de la fecha de inicio y la de fin
Muchas gracias Crandel por la respuesta |
|
| 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.
|