![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
¿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. ![]() |
#3
|
|||
|
|||
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.
![]() |
#4
|
||||
|
||||
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;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() |
#5
|
|||
|
|||
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.
|
#6
|
||||
|
||||
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. ![]() |
#7
|
|||
|
|||
Eso es lo que hago.... pero en esa lista tambien necesito guardar el nombre de la pestaña en la cual se encuentran...
|
#8
|
||||
|
||||
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. ![]() |
#9
|
|||
|
|||
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. ![]() |
#10
|
|||
|
|||
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 |
#11
|
|||
|
|||
![]() 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... |
#12
|
||||
|
||||
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. ![]() |
#13
|
|||
|
|||
Si se que no es recursiva.... pero hace algo similar a la que implemente.... a eso me referia.
|
![]() |
|
|
![]() |
|