Existe-t-il un moyen de créer une fenêtre enfant MDI à partir d'une DLL ActiveX écrite en Delphi 5 et de l'incorporer dans une fenêtre parent MDI créée à partir d'une application client Delphi XE Windows? Sinon, existe-t-il un moyen d'imiter le comportement?Comment créer une fenêtre enfant MDI à partir d'une DLL Delphi 5 ActiveX et l'intégrer dans un parent Delphi XE MDI?
Contexte
Il existe une application entièrement écrit en Delphi 5. La forme principale de l'application est une fenêtre parent MDI. Tous les autres formulaires de l'application sont des formulaires enfants MDI et chacun d'eux est créé à partir d'une bibliothèque ActiveX. L'application parente crée l'ActiveX, après quoi elle appelle une méthode de l'interface ActiveX. A partir de cette méthode, un formulaire est créé et FormStyle est défini sur fsMDIChild. À ce stade, le formulaire est un enfant MDI du parent MDI. Cela fonctionne parce que l'application et les bibliothèques ActiveX sont compilées à l'aide des packages d'exécution. Par conséquent, tous les formulaires partagent la même instance de TApplication.
Le problème
L'application est très importante, et doit être migré vers Delphi 2010 ou Delphi XE. Ce serait fantastique si l'application pouvait être migrée systématiquement, en migrant d'abord l'application, puis en migrant les bibliothèques ActiveX une à la fois (il y en a environ 50).
Le problème est que si l'application de la console est compilé dans XE, il ne sera plus en utilisant la même instance TApplication que ces bibliothèques encore compilées dans Delphi 5.
Même si les formulaires dans la bibliothèque ActiveX ne peut pas être vrai fenêtres enfant MDI, il semble que je devrais être capable de retourner le handle du formulaire qui est créé à partir de l'ActiveX et le récupérer du formulaire principal et faire apparaître le formulaire comme un enfant MDI. Je pourrais alors créer ma propre couche pour gérer les événements.
Des idées?
Mise à jour: L'approche actuellement utilisée pour cette application est la migration de MDI vers une interface SDI. Il est parfaitement possible d'instancier TForms à partir d'une DLL Delphi 5 ActiveX à partir d'une application Delphi XE, tant que le premier formulaire de chaque DLL peut prendre en charge ses propres données (chargement, enregistrement, affichage de formulaires supplémentaires, etc.). Le problème était de conserver la conception originale de MDI. Si la conception SDI s'avère acceptable, il n'y aura pas besoin d'une solution MDI. Pourtant, si quelqu'un sait comment réaliser la solution MDI, j'aimerais savoir.
Vous pourriez peut-être intégrer les formes de la bibliothèque activex dans les formulaires enfants MDI créés dans l'application XE ... (re-parenting les formes activex dans les formes XE instancié - et ne pas changer le style de formulaire des formes activex) –