Ver Mensaje Individual
  #1  
Antiguo 04-05-2003
Feñiz Feñiz is offline
Miembro
 
Registrado: may 2003
Posts: 20
Reputación: 0
Feñiz Va por buen camino
Obtener la clase de objetos

Antes de nada, disculpas por volver a postear de nuevo mi duda, creo que ya había sido respondida hace un par de días, pero con el cambio de foros no pude leer la respuesta.

Bueno, la cuestión es si existe algún método para poder trabajar con un objeto de tipo TComponent, accediendo a sus propiedades de clase directamente.

Pongo un ejemplo: Tengo un objeto Componente, te tipo TComponent. Ése es el objeto que paso como parámetro a una función, y puede ser distintos componentes visuales (un TButton, TLabel, Tform, TPanel, etc). Todos ellos tienen la propiedad TCaption, que es la que quiero modificar. La forma en que yo lo hago ahora es mediante un cast de esta forma:

If (Componente is TButton) then TButton(Componente).Caption:='Texto de caption'
else if (Componente is TLabel) then TLabel(Componente).Caption:='Texto de caption'
else ....

Y lo que yo querría saber es si existe alguna función o método que me permita hacerlo de forma similar a esta:

If (Componente is TButton) or (Componente is TLabel) or (Componente is TForm) or (Componente is TPanel) then
//Me aseguro de que pertenezca a una de las clases que tienen la propiedad Caption
(Función que estoy buscando).Caption:='Texto de caption';

En este ejemplo el ahorro de código es insignificante, pero si se está trabajando con 15 componentes diferentes, y modificando varias propiedades, se ahorra mucho tanto en cantidad de código como en claridad.

¿Existe la función que yo estoy buscando?
Responder Con Cita