![]() |
Contar componentes
Buenas necesito contar los componentes creados en tiempo de ejecucuion que a su vez se crean en otro comoponente.
Explico: En tiempo de ejecucion creo 5 comoponentes "Panel" y luego a su vez creo en 3 de estos componente un Button. Pues bien, necesitaria saber cuantos button tengo en total en el Form o bien pasar por cada uno de los Panel y que me digan cuantos button existen en cada uno de ellos, pero el resultado final seria saber cuantos button. Creo los paneles: Bit := Tpanel.Create(Self); Bit.Parent := From1; Bit.Left := 1; Bit.Top := 1; Bit.Height := 25 ; Bit.Width := 25 ; Creo los Button Bit := Tbutton.Create(Tpanel); Bit.Parent := Tpanel; Bit.Left := 1; Bit.Top := 1; Bit.Height := 25 ; Bit.Width := 25 ; Cuento los paneles: for i := 0 to componentCount - 1 do if components[i] is Tpanel then ShowMessage(IntToStr(I)); Pero el problema es que no puedo contar los Button que hay dentro de los Paneles Gracias |
Hola
Seguro hay formas mas elegantes y más fáciles, pero así de repente tal vez te de una mejor idea.
Saludos |
Muchas gracias por la respuesta.
Es cierto que hay formas mas elegantes pero en realidad es un ejemplo y despues de loclacizar los button debo de hacer mas cosas. De todas formas me localiza los Tpanel pero no me localiza los Tbutton creados dentro de esos Tpanel, quiero recordar que los button se generan en tiempo de ejecucion. Alguna solucion?? Vamos encaminados |
Hola.
Antes de nada, comentarte que utilices los TAG's cuando añadas código delphi a los mensajes. Otra cosa (no se si porque has puesto el código de memoria), pero creo que este código (si lo tienes así en el programa) te va a dar problemas. O fallará directamente.
En concreto la línea que asigna el Parent, debe fallar o no funcionará como piensas. En cuanto a lo que necesitas, para contar los Paneles están utilizando ComponentCount y Components[i]. Para contar los botones en el interior de un TPanel, debes usar lo mismo, pero utilizando esa misma propiedad del contenedor. En este caso del TPanel. Si utilizas un cóidigo como este:
Tienes como contar los paneles (aparece en el caption del form) y como contar los botones de cada panel (que aparece en el caption del propio Panel). El resultado será algo similar a esto: ![]() |
Muchas gracias Neftali, ya he aprendido bastante con el tema de lod botones dentro de paneles.
Ahora queiro resolver otro problema que se me esta dando. Resulta que una vez creado varios paneles voy creando poco a poco botones en algunos panles pero a su vez quiero eliminar algunos de esos botones que he creado (como si fuera un .visible true o false). Consigo poner en .visible :False el ultimo boton que he creado pero no consigo cojer el boton que este dentro del panel elegido. Un saludo y espero haberme explicado. Gracias |
Cita:
Una vez que cada elemento tiene un nombre que puedes identificar de forma única, lo más sencillo es encontrarlo. Puedes hacerlo:
La más sencilla es utilizar FindComponent con un código similar a este:
|
Muchisimas gracias, ya lo he resuelto y he aprendido algo mas.
Gracias de Nuevo. |
La franja horaria es GMT +2. Ahora son las 04:42:40. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi