Détecter la création d'un formulaire dans l'application

Signaler
Messages postés
94
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
22 janvier 2009
-
Messages postés
94
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
22 janvier 2009
-
Bonjour à tous !

Je cherche à détecter l'ajout d'un OwnedForm dans la collection OwnedForms d'un formulaire. Quelqu'un aurait une idée ?

Je m'explique : je suis en train de créer une sorte de robot de test, ou d'enregistreur de macros, pour mon application.
Pour cela, j'ai donc ajouté un projet "TestingBot" à ma solution. Ce projet permet d'ajouter des handlers sur tous les contrôles de mon application en partant de ma fenêtre principale.
Ainsi, pour lancer l'enregistrement des actions utilisateur, je parcours toute le liste Controls du formulaire, et pour chaque contrôle :


<li>
J'ajoute un handler sur KeyPress
</li>
<li>
J'ajoute un handler sur Click
</li>
<li>
J'ajoute un handler sur DoubleClick
</li>
<li>
J'ajoute un handler sur ControlAdded (pour ajouter les même handlers sur tout contrôle créé au runtime)
</li>
<li>
J'ajoute un handler sur ControlRemoved (idem, pour supprimer les handlers)
</li>
<li>
Et enfin je parcours sa propre liste Controls pour y faire la même chose (fonction récursive)
</li>



Tout marche bien, et quand je veux arrêter l'enregistrement, je fait la même chose en supprimant tous les handlers.
Ainsi, je détecte bien les actions souris/clavier de l'utilisateur sur mon formulaire principal, ainsi que tous ses contrôles, ses MdiChild, etc...

Le soucis est que les MdiChild peuvent quant à eux ouvrir un fomulaire (en précisant toujours owner = mainform) qui s'ajoutent donc à la collection OwnedForms de mon formulaire principale. Et là, c'est le drame ! Il n'y a pas d'événement qui corresponde à ça ! Je ne peux donc pas tracer les actions utilisateur sur ces nouveaux formulaires !

D'où ma question : comment détecter l'ajout d'un formulaire dans la collection OwnedForms d'un formulaire ?
J'ai également pensé à la collection OpenForms de l'objet Application, mais le soucis est le même : il n'y a pas d'événement correspondant...
Une troisième piste serait d'utiliser la fonction Application.AddMessageFilter pour "voir" les événements de création de formulaire propre à mon application... Mais là, je sèche un peu, je ne vois pas trop comment faire...

Si quelqu'un a une idée, ou même un début de piste pour régler ce problème, je suis ouvert à toute suggestion ou explication !!


<hr size="2" width="100%" />
Divad
Techniques de Web Design, Traductions d'articles sur le Web Design, Astuces .Net

1 réponse

Messages postés
94
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
22 janvier 2009
2
Bah alors, personne n'a d'idée ?


Bon, en tout cas, la piste des IMessageFilter est à abandonner, les
messages WM_CREATE ne sont pas concernés par cette fonction...

<hr size="2" width="100%" />Divad
Techniques de Web Design, Traductions d'articles sur le Web Design, Astuces .Net