![]() |
Casteo en tiempo de ejecución
Saludos gente,
Hacía tiempo que no pasaba por aquí, pero es que he estado muy liado :(, a partir de ahora, si los negocios lo permiten, prometo dedicarle más tiempo.Agradecido de antemano, Un saludo desde Canarias. |
Cita:
(1) La primera forma es que todos tus TFormulario deriven de un TFormBase, de forma que los métodos estén definidos en TFormBase como virtual (y abstract, si es necesario) y luego en los TFormulario se redefinan utilizando override; Eso te permitiría llamar a los métodos de TFormBase y estaría ejecutando los de los formularios derivados (por el override). (2) La otra opción es utilizar RTTI; Para ellos debes definir todos los métodos que vayas a utilizar en la parte published del formulario y accederlos vía RTTI utilizando el nombre del método. En éste hilo puedes encontrar un ejemplo: http://www.clubdelphi.com/foros/show...05&postcount=2 Si necesitas más, ya dirás,... |
Agradecido por la contestación, te pongo parte del código que puede ser aclarativo para que te hagas una idea.
La clase TfrmEmpresas que es la que quiero incrustar, siempre será diferente, por lo que no es posible hacer una herencia, ya que los campos que contiene no coinciden en la mayoría de los casos. Y lo de published no funciona pues debes indicarle de alguna forma que esa clase tiene esos métodos pues como puedes observar el form está siendo tratado como si fuera un TComponent. Saludos desde Canarias |
Decartado el tema de herencia, sólo queda RTTI.
Si buscas la unit TypInfo verás que tiene los métodos: function GetStrProp(Instance: TObject; const PropName: string): string; overload; procedure SetStrProp(Instance: TObject; const PropName: string; const Value: string); overload; Para consultar y asignar valor a una propiedad de tipo String (que sea published). Revisa éste artículo: http://www.elists.org/pipermail/delp...ry/002721.html Se titula: Using RTTI to obtain TString property Y creo que es lo que necesitas... |
Saludos,
He solucionado la historia mediante una herencia y la utilización del metodo MethodAddress lo cual me ha permitido ejecutar cualquier método con o sin parámetros solamente pasando el nombre del método y el parámetro que en caso de no estar es definido como ''. Gracias por tu ayuda pues ha sido muy provechosa. Prometo colgar el código (ya veré que tipo de licencia le pongo) ;) para que todo el mundo pueda utilizarlo y ampliarlo si lo desea. Creo haber leido por ahí una que se llamaba TapaWare, lo que si no recuerdo mal indicaba que el precio para utilizarlo era el pago de una tapita en un bar... :D. Saludos desde Canarias. |
La franja horaria es GMT +2. Ahora son las 08:49:54. |
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