Focus sur fenêtres MDI

Focus sur fenêtres MDI - VB/VBA/VBS - Programmation

Marsh Posté le 12-01-2007 à 15:44:44    

Bonjour,
J'ai un programme qui a 2 MDI filles d'une fenêtre mère. J'ai un problème si je suis les étapes suivantes :
- Je met le focus sur un controle de mon MDI fille n° 1.
- Je vais sur mon MDI fille n° 2.
- Je ferme la MDI fille n° 2.
--> La MDI fille n° 1 s'active automatiquement (c'est normal), mais le focus se positionne sur le controle qui a le TabIndex le plus petit et n'est plus sur le controle sur lequel je l'avais positionné.
 
Le plus bisarre est que ce problème n'arrive que si les MDI filles sont maximisées. En effet, si on est en mode fenêtre, le focus reste bien sur le bon controle.
Ce problème arrive aussi si on se déplasse d'une fenêtre à l'autre avec Ctrl+Tab, mais pas si on passe par le menu "Fenêtre" et qu'on choisi la fenêtre à afficher.
Merci de me dire si vous connaissez ce problème et si on peut le contourner.
 
edit : J'utilise VB6


Message édité par Red Viper le 12-01-2007 à 15:46:17
Reply

Marsh Posté le 12-01-2007 à 15:44:44   

Reply

Marsh Posté le 22-01-2007 à 14:55:50    

A mon avis, quand tu entres dans le scénario "ça déconne", c'est qu'un évènement (peut-être interne) est levé en plus.
 
Le plus simple, à tester :
-> OnBlur de la fenêtre : sauvegarde de l'id du champ qui as le focus
-> OnFocus de la fenêtre : restauration du focus sur le champ sauvegardé

Reply

Marsh Posté le 24-01-2007 à 10:47:14    

Malheureusement, je suis arrivé à la même conclusion que toi. J'espérais malgré tout me tromper.
Merci pour ta réponse.

Reply

Marsh Posté le 25-01-2007 à 09:53:13    

Pour palier à ce premier problème, j'en rencontre un autre.
Est-il possible d'accéder aux controls d'un activeX ?
Je m'explique. J'ai un activeX que j'ai développé, et je le colle sur un formulaire. Je voudrais accéder aux controls de l'activeX depuis mon formulaire.
Merci de me dire si c'est faisable.

Reply

Marsh Posté le 25-01-2007 à 10:29:52    

Ca dépend de ton ActiveX.
Il faut notamment que ses contrôles soient exposés en public, où que tu disposes d'accesseurs publics.

Reply

Marsh Posté le 25-01-2007 à 11:41:25    

En fait, il s'agit d'un OCX comportant plusieurs TextBoxes, Options, CheckBoxes et boutons.
Le but étant que je puisse, dans un premier temps, savoir sur quel contrôle de mon OCX se trouve le focus, et ceci depuis mon formulaire qui se trouve donc à un niveau supérieur.
Puis par la suite, remettre le focus sur le contrôle de mon OCX.
 
Tu va me dire que c'est bizarre de coller un OCX sur un formulaire et de ne pas faire le formulaire directement, mais en fait je fait ça car j'ai un formulaire vierge qui charge différents OCX selon l'action effectuée. Ceci me permet de coder une seule fois le code commun aux différents ocx.
Je suis pas sûr d'avoir était clair. Pose des questions sur le fonctionnement de mon application si tu as besoin pour répondre au mieux à mon problème.
Merci.

Reply

Marsh Posté le 29-01-2007 à 17:05:56    

Pour palier à mon problème, j'aimerai récupérer le TabIndex du contrôle qui a le focus.
Pour celà, je veux y accéder depuis un contrôle qui est présent sur toute mes fenêtres.
Il est possible d'accéder aux contrôles de l'activeX parent via UserControl.ParentControls.Item(i), mais comment savoir sur lequel de ces contrôles se trouve le focus.
 
Merci de m'éclairer. :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed