MDIForms / MDI Childs et gestion d'evenements

cs_butcho Messages postés 1 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 3 juillet 2003 - 3 juil. 2003 à 10:17
cs_Base Messages postés 70 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 31 juillet 2003 - 3 juil. 2003 à 11:04
Bonjour tout le monde, J'ai un super probleme !!

Je developpe actuellement une application VB6.0 avec un design patterns "Modele-Vue-Controleur"

Le but de ce pattern est de faire transiter des evenements customisés de ma fenetre principale vers mon controleur.

Le probleme est le suivant :
Je n'arrive pas a faire reference a ma MDIForm dans le code de ma MDIChild pour lui demander d'envoyer un evenement.

Imaginons que je n'aie que 2 forms dans mon projet ce qui n'est pas du tou le cas ;) :
-> FRM_PRINC as MDIForm
-> FRM_LOGIN as MDIChild

Lors du click sur un bouton de FRM_LOGIN je ve faire transiter des variables par un evenement de FRM_PRINC je fais donc appel au code suivant

FRM_PRINC.raiseEvent ....

Et la VB me dis qu'il ne peut y avoir qu'une seule fenetre MDI dans le projet.....ce que soit disant je trouve logique !!!!

J'ai dons essayé de déclarer l'evenement non pas dans MDIForm mais dans MDIChild et de l'intercepter dans mon controleur....Pas de réponse ôÔ

J'ai aussi essayé de faire une reference de ma MDIForm dans ma MDIChild mais cela n'est pas concluant :

private parentFrame as MDIForm

public sub init(byRef f as MDIForm)
set parentFrame = f
end sub

Avec le code suivant dans la MDIForm (FRM_PRINC)

private sub btn_click()
FRM_LOGIN.load
FRM_LOGIN.init(Me)
FRM_LOGIN.show
end sub

Voila voila le probleme... si cela vous parait obscur ou mal expliqué mailez moi c super urgent...Merci d'avance !!!!

1 réponse

cs_Base Messages postés 70 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 31 juillet 2003
3 juil. 2003 à 11:04
Mouais, je vois à peut pret ton problème...

En fait, pour ce genre d'appli, il vaut mieux créer un Sub Main dans un module et l'indiqué en objet de démarrage. De cette manière tu peux déclarer une foi pour toute ta feuille MDI, (disons qu'elle s'appelle MDIForm1) en FRM_PRINC, pour tout le projet. Ensuite il FAUT utiliser dans TOUT le code FRM_PRINC comme référence à la feuille et uniquement FRM_PRINC. Sinon tu auras le message d'erreur car VB va essayer de créer MDIForm1 comme nouvelle instance... Voici a quoi peu ressembler Sub Main :

Public FRM_PRINC as New MDIForm1

Sub Main
'Dans TOUT le code il faut obligatoirement utiliser FRM_PRINC comme référence à la feuille MDI
FRM_PRINC.Show

Do

DoEvents
Loop Until blnEnd

End
End Sub


Il suffit de passer blnEnd a Vrai dans Form_Unload du code de la feuille pour quitter.

B@se 8-)
0
Rejoignez-nous