Есть ли способ создать дочернее окно MDI из DLL ActiveX, написанной на Delphi 5, и встроить его в родительское окно MDI, созданное из клиентского приложения Windows Delphi XE? Если нет, есть ли способ имитировать поведение?
Фон
Существует приложение, полностью написанное на Delphi 5. Основной формой приложения является родительское окно MDI. Все остальные формы в приложении являются дочерними MDI-формами, и каждая из них создается из библиотеки ActiveX. Родительское приложение создает ActiveX, после чего вызывает метод интерфейса ActiveX. Из этого метода создается форма, и ее FormStyle устанавливается в fsMDIChild. На данный момент форма является дочерним элементом MDI родительского MDI. Это работает, потому что и приложение, и библиотеки ActiveX компилируются с использованием пакетов времени выполнения. В результате все формы используют один и тот же экземпляр TApplication.
Проблема
Приложение очень большое, и его необходимо перенести на Delphi 2010 или Delphi XE. Было бы здорово, если бы приложение можно было переносить систематически, сначала перенеся приложение, а затем перенося библиотеки ActiveX по одной (их около 50).
Проблема в том, что если консольное приложение скомпилировано в XE, оно больше не будет использовать тот же экземпляр TApplication, как те библиотеки, которые все еще скомпилированы в Delphi 5.
Даже если формы в библиотеке ActiveX не могут быть настоящими дочерними окнами MDI, кажется, что я должен иметь возможность вернуть дескриптор формы, созданной из ActiveX, извлечь ее из основной формы и заставить форму отображаться быть MDI ребенком. Затем я мог бы создать свой собственный слой для обработки событий.
Есть идеи?
Обновление. В настоящее время этот подход используется для переноса его из MDI в интерфейс SDI. Вполне возможно создать TForms из DLL-файла Delphi 5 ActiveX из приложения Delphi XE, при условии, что первая форма из каждой DLL может заботиться о своих собственных данных (загрузка, сохранение, отображение дополнительных форм и т. Д.). Проблема заключалась в сохранении оригинального дизайна MDI. Если проект SDI окажется приемлемым, не будет необходимости в решении MDI. Тем не менее, если кто-то знает, как реализовать решение MDI, я хотел бы знать.