Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-12-2003
Anubys Anubys is offline
Miembro
 
Registrado: dic 2003
Ubicación: Chile
Posts: 15
Poder: 0
Anubys Va por buen camino
Tabsheets maldito

A ver si alguien me puede ayudar:
Necesito saber cuantos objetos hay dentro de un TTabSheet, para asi poder recorrerlos. El problema es que no se el nombre del objeto, ya que los capturo de la siguiente forma :
screen.Forms[1].Components[a]
.... este se supone que es mi objeto TTabSheet, pero al consultar por la cantidad de componentes que tiene, simplemente me da un error....
La forma en que pregunto por la cantidad es la siguiente:
TTabSheet(TControl(screen.Forms[1].Components[a])).ComponentCount

Que opinan.

Última edición por Anubys fecha: 16-12-2003 a las 21:03:53.
Responder Con Cita
  #2  
Antiguo 16-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿Estas seguro que ese componente es el TTabSheet que buscas?
Siendo GetComponentCount un método de TComponent... ¿Para qué haces un cast a TControl y luego a TTabSheet?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 16-12-2003
Anubys Anubys is offline
Miembro
 
Registrado: dic 2003
Ubicación: Chile
Posts: 15
Poder: 0
Anubys Va por buen camino
Si estoy seguro que es el que busco.... e hice cast a TControl y luego a TTabSheet, por que pense que podria funcionar... depues de haber hecho varios intentos.
Responder Con Cita
  #4  
Antiguo 16-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Te voy a pasar algunas validaciones algo básicas, pero pueden servirnos para detectar el error:

Código:
if Assigned(screen.Forms[1]) Then
begin
  {hacer el ciclo}
  if screen.Forms[1].Components[a] is TTabSheet Then
    Caption := IntToStr(screen.Forms[1].Components[a].ComponentCount);
end;
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 16-12-2003
Anubys Anubys is offline
Miembro
 
Registrado: dic 2003
Ubicación: Chile
Posts: 15
Poder: 0
Anubys Va por buen camino
No funciona..... Mira para que te hagas una idea, lo que quiero hacer es buscar en una ventana todos sus botones, y ser capaz de saber en que TTabSheet estan (si es que corresponde), hay que tomar en cuanta que puede que esten sueltos en el formulario.
Responder Con Cita
  #6  
Antiguo 16-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Pero.. ¿Sigue dando error o no funciona directamente?...


Para buscar en una ventana todos los botones, no te tendrías que preocupar por buscar un tabsheet.. podrías hacer una función que recorra todos los componentes del form y aquellos que sean de la clase que esperas (TButton), agregarlos a una lista.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 16-12-2003
Anubys Anubys is offline
Miembro
 
Registrado: dic 2003
Ubicación: Chile
Posts: 15
Poder: 0
Anubys Va por buen camino
Eso es lo que hago.... pero en esa lista tambien necesito guardar el nombre de la pestaña en la cual se encuentran...
Responder Con Cita
  #8  
Antiguo 16-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Tenes varias opciones, o peguntas por el Parent de los botones, o puedes recorrer recursivamente los Controls[] de form guardando el nobre del último TTabSheet al que has accedido.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 16-12-2003
Anubys Anubys is offline
Miembro
 
Registrado: dic 2003
Ubicación: Chile
Posts: 15
Poder: 0
Anubys Va por buen camino
No puedo preguntar directamente por el parent, puesto que en el formulario hay botones que no estan en ninguna pestaña, como los hay los que estan dentro de un panel o grupo dentro de otro grupo y dentro del TtabSheet....
La segunda idea, de hacer una funcion que busque el padre hasta llegar al form, puede que funcione.... cualquier otra idea es bien recivida.
Responder Con Cita
  #10  
Antiguo 18-12-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola:

Esa última idea que apuntas la tienes en una función suelta llamada GetParentForm (unit Forms.pas) que precisamente recorre la jerarquía de Parents de un control hasta llegar al form. Si la miras te puedes hacer una idea de cómo hacer lo mismo hasta encontrar un TabSheet que haga de parent, y ahí comprobar si está dentro o no del TabSheet que deseas.
__________________
Guía de Estilo
Responder Con Cita
  #11  
Antiguo 18-12-2003
Anubys Anubys is offline
Miembro
 
Registrado: dic 2003
Ubicación: Chile
Posts: 15
Poder: 0
Anubys Va por buen camino
Thumbs up

Gracias a todos aquellas personas que opinaron en este hilo, les comujnico que el problema ya ha sido resuelto... mediante una funcion recursiva que me busca el padre de un objeto... muy pareceida a la GetParentForm mencionada por andres1569.

Agradecido...
Responder Con Cita
  #12  
Antiguo 18-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Pero... GetParentForm no es una función recursiva !!

Un recuerdito reciente: http://www.clubdelphi.com/foros/show...&threadid=5895

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #13  
Antiguo 18-12-2003
Anubys Anubys is offline
Miembro
 
Registrado: dic 2003
Ubicación: Chile
Posts: 15
Poder: 0
Anubys Va por buen camino
Si se que no es recursiva.... pero hace algo similar a la que implemente.... a eso me referia.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 11:27:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi