Cambiar caption componentes
Hola Gente:
Necesito cambiar el caption de los componentes que hay en un form. Por ejemplo tengo un formulario con Groupbox, labels, paneles, etc. Lo que quiero hacer es cambiar el caption de los componentes que esten en el formulario que tengan caption según lo que indique el caption. Sin importar que componente tengo en el form lo que había hecho era un for como el siguiente for ind := 0 to ComponentCount -1 do if (Components[ind] is Tlabel) then TLabel(Components[ind]).Caption:= 'algo'; de esa forma puedo pero en realidad yo no se que componentes tengo, en este ejemplo que mostre pregunto si son labels pero en realidad puedo tener cualquier componente y quiero cambiar los que tengan caption Alguno me puede dar una mano con esto muchas gracias y saludos a todos |
En ese caso, en lugar de Components y ComponentCount, utiliza las propiedades Controls y ControlCount, respectivamente, con las cuales no necesitarás hacer ningún molde de tipo.
El único problema de esta solución es que no cambiará el título de los controles que estén dentro de otros controles, a menos que realices llamadas recursivas sobre el arreglo Controls de cada componente TWinControl del formulario. Espero te sirva de orientación. Saludos. Al González. :) P.D. EDITO: Aún puedes usar Components y ComponentCount preguntando en el If si el componente es un TControl (en lugar de TLabel). Pero para cualquiera de las dos soluciones deberás tener en cuenta que Caption es una propiedad protegida a nivel de TControl, por lo que puede resultarte necesario hacer lo que se conoce como "molde de acceso" declarando una clase hija de TControl y usarla en el "type cast" que haces. |
Cita:
Para evitar eso puedes utilizar RTTI. En mi página Web, en la sección de tips hay uno titulado "Modificar propiedades de controles en ejecución utilizando RTTI", que explica cómo utilizar RTTI para evitar tener que hacer justo cosas como estas...
|
La franja horaria es GMT +2. Ahora son las 04:38:47. |
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