Cita:
Empezado por AzidRain
Como el controlador no sabe que clase realmente representa cada TForm no es capaz de llamar al constructor correcto.
Lo más simple sería modificar rápidamente al controlador para que llame al constructor correcto según el caso, pero lo que quiero es que el controlador sea totalmente independiente de la forma que le pase uno y que llame al constructor que corresponda.
|
Bueno, independientemente de tu modelo, sólo se me ocurren dos formas de hacer eso:
(1) A partir del nombre y intentando obtener la referencia a la clase utilizando RTTI; Ya lo hemos discutido muchas veces por aquí.
(2) Teniendo en algun sitio un "diccionario" (que no deja de ser algo simnilar a lo que hace RTTI) que sirve de "apoyo" a tu controlador donde tengas todas las instancias y sus constructores.
Código Delphi
[-]
TInstancia1 = class(TForm)
....
Código Delphi
[-]
Type
TFormInstancia1Class = class of TInstancia1;
En tu diccionario debes guardar los apuntadores; En mi caso suelo guardar una pareja, ID+ApuntadorConstructor. Con ese diccionario el controlador puede crear las instancias del tipo correcto.