![]() |
Sobre la variable Sender
Hola amigos del foro, mi duda es la siguiente: Tngo un evento que comparto con dos componentes de diferente tipo, pero en dicho esvento tengo que extraer las mismas propiedades a estos componentes(el hint y el caption) rl único ancestro común que tienen es TComponent y este no tiene estas propiedades, entonces tengo que hacer lo siguiente.
Si nos fijamos la única diferencia es la captura del tipo de objeto que viene por Sender. Mi pregunta es: Existe alguna forma de obtimizar el código anterior. desde ya mil gracias Saludos Yuserqui. |
Tu problema no es la optimización del codigo, sino que tu código es propenso a errores inesperados, porque si el objeto pasado como sender no es un TMenuItem o un TdxWinXPBarItem, seguramente tendras un error bastante feo.
|
Sí, lo que buscas se puede hacer con una técnica de OOP llamada "Reflexión"
en la unidad Typinfo.pas de delphi encontraras las funciones necesarias: GetPropInfo, SetOrdProp, SetStrProp y alguna mas... pero las interesantes son esas. Concretamente lo que pides se puede hacer así:
Lo bueno es que vale para cualquier Sender .. incluso si te bajas el componente "TColorPolloFritoEdit" (se nota que tengo hambre?) funcionará. |
Gracias
Muchas gracias por tu rápida respuesta, tienes mucha razón(debemos controlarlo todo) a pesar que la aplicacón la estoy programando yo y estoy completamente seguro que solo esos dos tipos apuntan a este evento no di la importancia que debía al control de errores.
Regresando al tema del hilo, no entiendo la causa de que no exista un método para acceder a una determinada propiedad por su nombre independientemente de la clase que sea. |
Justo a mi gusto
Muchas Gracias por la gran ayuda, mi lenta conección me obligó a responder a el amigo Delphi.com.ar antes de haber podido leer tu mensaje, no conocía esta unit que concidero muy interesante.
reslví mi problema que no era de asignar el valor a la propiedad sino de capturar dicho valor con:
Mil gracias a todos nuevamente y un saludo Yusnerqui |
Utilizar RTTI no es precisamente optimizar el código, que es lo que tu pedías... si posiblemente sea flexibilizarlo.
Saludos! |
| La franja horaria es GMT +2. Ahora son las 16:38:59. |
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