Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Tabsheets maldito (https://www.clubdelphi.com/foros/showthread.php?t=6054)

Anubys 16-12-2003 21:01:52

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.:confused:

delphi.com.ar 16-12-2003 21:13:03

¿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?

Anubys 16-12-2003 21:19:20

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. :(

delphi.com.ar 16-12-2003 21:22:26

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!

Anubys 16-12-2003 21:37:04

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.

delphi.com.ar 16-12-2003 21:44:26

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.

Anubys 16-12-2003 21:50:03

Eso es lo que hago.... pero en esa lista tambien necesito guardar el nombre de la pestaña en la cual se encuentran...

delphi.com.ar 16-12-2003 21:57:57

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!

Anubys 16-12-2003 22:03:43

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.
:)

andres1569 18-12-2003 19:00:25

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.

Anubys 18-12-2003 19:10:27

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...

delphi.com.ar 18-12-2003 20:05:58

Pero... GetParentForm no es una función recursiva !!

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

Saludos!

Anubys 18-12-2003 20:14:00

Si se que no es recursiva.... pero hace algo similar a la que implemente.... a eso me referia.


La franja horaria es GMT +2. Ahora son las 09:27:44.

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