¿Existe alguna manera de crear una ventana secundaria MDI a partir de una DLL dll escrita en Delphi 5, y de incrustarla en una ventana principal MDI creada desde una aplicación cliente de Windows Delphi XE? Si no, ¿hay alguna manera de imitar el comportamiento?¿Cómo creo una ventana secundaria MDI desde un dll Delphi 5 ActiveX y la incrusto en un padre MDI Delphi XE?
Antecedentes
hay una aplicación escrita completamente en Delphi 5. La forma principal de la aplicación es una ventana MDI primario. Todos los demás formularios de la aplicación son formularios secundarios MDI, y cada uno de ellos se crea a partir de una biblioteca ActiveX. La aplicación principal crea el ActiveX, después de lo cual se llama a un método de la interfaz ActiveX. A partir de este método, se crea un formulario y su FormStyle se establece en fsMDIChild. En este punto, el formulario es un hijo MDI del padre MDI. Esto funciona porque tanto la aplicación como las bibliotecas ActiveX se compilan utilizando paquetes de tiempo de ejecución. Como resultado, todas las formas comparten la misma instancia de TApplication.
El problema
La aplicación es muy grande, y es necesario migrar a Delphi 2010 o Delphi XE. Sería fantástico si la aplicación se pudiera migrar sistemáticamente, migrando primero la aplicación y luego migrando las bibliotecas de ActiveX de a una por vez (hay alrededor de 50 de ellas).
El problema es que si la aplicación de consola se compila en XE, ya no va a utilizar la misma instancia TApplication como aquellas bibliotecas todavía compilados en Delphi 5.
Aunque las formas de la biblioteca ActiveX no pueden ser verdaderas ventanas hijas MDI, parece que debería ser capaz de devolver el identificador del formulario que se crea desde el ActiveX y tomarlo del formulario principal y hacer que el formulario parezca ser un MDI secundario. Entonces podría crear mi propia capa para manejar eventos.
¿Alguna idea?
Actualización: El enfoque que se está adoptando actualmente con esta aplicación es que se está migrando de MDI a una interfaz SDI. Es perfectamente posible instanciar TForms desde una DLL Delphi 5 ActiveX desde una aplicación Delphi XE, siempre que el primer formulario de cada DLL pueda encargarse de sus propios datos (cargar, guardar, mostrar formularios adicionales, etc.). El problema estaba en mantener el diseño original de MDI. Si el diseño de SDI resulta aceptable, no habrá necesidad de una solución de MDI. Aún así, si alguien sabe cómo lograr la solución MDI, me gustaría saberlo.
tal vez podría integrar las formas de la biblioteca ActiveX en formularios MDI secundarios creados en la aplicación XE ... (re-crianza de los formularios ActiveX en las formas XE instancia - y no cambian el estilo de formulario de los formularios activex) –