begin process at 2012 02 15 10:57:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

La Magie des Formulaires MDI - L'Illusion est parfaite


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

La Magie des Formulaires MDI - L'Illusion est parfaite

dimanche 28 septembre 2008 à 22:57:52 | La Magie des Formulaires MDI - L'Illusion est parfaite

68manu

Bonsoir,

voici trois jours que je me prends la tete sur les formulaires MDI. Et malgre les bonnes sources et tutoriaux presents, je n'ai pas trouve chaussure a mon pied alors je soumets ma migraine a votre sagacité.

Je vous explique le plus clairement possible mon probleme :

J'ai un formulaire MDI  qui peut generer plusieurs formulaires enfants identiques dans leur apparence. Toutefois chaque formulaire enfant doit pouvoir gérer de facon indépendante les données recueillies, d'autant plus qu'il y a pas mal de controles différents (ca va du Timer, au DataGridView, Combobox, Boutons, et j'en passe et des meilleures). Mon idée est de gérer plusieurs tournois de ping-pong en même temps (ex : tournoi jeunes, tournoi adultes, tournoi Veterans...etc...). Bien sûr je souhaitais visualiser chaque tournoi dans un formulaire enfant MDI en meme temps, car il se peut qu'a un instant donne plusieurs tournois aient lieu en meme temps.

J'ai l'impression que d'avoir plusieurs fenetres MDI enfant ouvertes ayant le meme code de développement gène l'ordinateur, comme si du coup au premier changement de variable, il y a un confusion et qu'il ne sait pas apres sur quel formulaire il doit appliquer le changement de variable.
Je dois preciser que tout le code fonctionne parfaitement quand je n'utilise qu'un formulaire enfant a la fois.
Description du projet :

Issu Classe FormulaireMDI Parent :

' Gestion d'un nouveau tournoi

PrivateSub ShowNewForm(ByVal sender AsObject, ByVal e As EventArgs) Handles NewToolStripMenuItem.Click, BtnAjouterTournoi.Click

' Creez une nouvelle instance du formulaire enfant.

Dim NouveauTournoi AsNew NewTournament' Cree une nouvelle feuille de match (NewTournament, est une classe formulaire)

NouveauTournoi.WindowState = FormWindowState.Maximized

m_ChildFormNumber += 1

NouveauTournoi.Text =

"Tournoi des " & Categorie(m_ChildFormNumber)' Categorie est une variable tableau de constantes

NouveauTournoi.Name =

"Tournoi" & m_ChildFormNumber

' Lancement de ma boite de parametrage du tournoi
' Elle a pour effet d'initialiser une astuce qui me permet de reconnaitre les differents formulaires enfants
' Est genere entre autre la variable tableau TYPETOURNOI()
' A chaque appel de DlgBox1, je REdim Preserve TYPETOURNOI en augmentant le tableau de 1 entree que j'initialise avec NouveauTournoi.text

DlgBox1.Name =

"DlgBoxP" & m_ChildFormNumber

If DlgBox1.ShowDialog = Windows.Forms.DialogResult.Cancel Then

ExitSub

EndIf

DlgBox1.Dispose()

NouveauTournoi.Show()

EndSub
Extrait Classe Formulaire Enfant NewTournament (Appel par NouveauTournoi)

Private

Sub NewTournament_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load

' on recupere le numero du tournoi
' Celle valeur est toujours equivalente au m_ChildNumber d'au dessus et me permet de reconnaitre les parametres de TYPETOURNOI(), et SURTOUT le formulaire enfant correspondant
' Pour simplicite, je donne l'exmple du DatagridView, mais c'est la meme chose pour tous les controles :
' l'initialisation ne pose jamais de problemes, la modification en pose
' Donc ici j'ai un formulaire avec un DataGridView appele dgv
numerotournoi = CInt(Me.Name.Substring(7, Me.Name.Length - 7))

' on initialise les controles
ForEach objet InMe.Controls
objet.visible =
False
Next

Select Case TYPETOURNOI(numerotournoi)
Case "Jeunes"
InitialiserDgv("Jeunes",150,400,Color.Blue,Color.Lavender,Color.LavenderBlush)  'on initialise le controle DataGRidview, pas de soucis les initialisations, ca marche pour tous les nouveaux formulaires
' Autres initialisations selon le cas du type de tournoi
Case "Adultes"
InitialiserDgv("Jeunes",150,400,Color.Salmon,Color.SandyBrown,Color.LightPink) 
...
End Select
End sub

' Admettons que lors de l'utilisation du formulaire gerant le tournoi Jeunes, vous voulez Checker le gagnant
' Et la bonne blague ...vous gerez aussi un tournoi Adultes.
Private sub Dgv_Cellcontentclick(Byval sender asSystem.Object,ByValeAsSystem.Windows.Forms.DataGridViewCEllEventArgs) HandlesdgvRencontre.CellContentClick

Dim
ligne As Integer=e.RowIndex

' C'est cette modification qui ne s'opere pas, et sur aucun des formulaires a partir du moment
'   ou il y en a au moins deux en meme temps.
' Ceci est valable pour n'importe quel controle
dgv.Rows(ligne).cells("Vainqueur").Value= True
End sub

1. Merci de votre courage pour avoir lu jusque la !

Voici les solutions auquelles j'ai pense et qui sont "triviales"

a. Mon formulaire est precréé avec le Concepteur -> Dois je faire toute la creation via le code ?
A vrai dire j'aimerais une autre solution

b. J'utilise une astuce similaire a celle qui me permet de reconnaitre mes formulaires, pour rappel le variable numerotournoi
Mais cela veut dire qu'il me faut des Arrays de formulaires, cela est il possible ?

c. Demander humblement de l'aide sur ce point. Je sais qu'il existe une solution, sinon aucune application ne pourrait utiliser deux fenetres enfants en meme temps.

Merci de votre aide
Emmanuel

_____________________
No problems, only soluces
lundi 29 septembre 2008 à 00:22:08 | Re : La Magie des Formulaires MDI - L'Illusion est parfaite

gillardg

pourquoi ne pas faire le design tes forms à l'avance, chacune ayant ses spécificités et simplement les appeler au moment ou tu en as besoin

exemple

1 form parent

1 form tournoi enfants
1form tournoi adultes
1 form tou......
1 .....
1.....
dans le menu de form_parent tu mets le code qui te permet d'appeler chacun de ses enfants

lundi 29 septembre 2008 à 08:54:10 | Re : La Magie des Formulaires MDI - L'Illusion est parfaite

68manu

Bonjour gillardg,
merci de ta reponse, c'est en effet la solution qui parait la plus simple par rapport a ce que j'ai expose.
Mais en me relisant apres, j'ai remarque que j'avais oublie de preciser quelque chose :

Chaque type de tournoi peut etre categorise encore selon le classement ou encore selon le sexe, etc...
.
Ce qui fait que j'ai par exemple que je peux avoir deux tournois jeunes, l'un pour les debutants, l'autre pour des plus forts, etc...ou un tournoi adulte feminin et masculin ou mixte...

Etant donne la multiplicite > 50 possibilites, je ne peux bien evidemment pas faire un formulaire par tournoi. L'application deviendrait vite tres "lourde". Sans compter, pour corser le truc, que l'utilisateur ne pourrait pas gerer un tournoi A ou B ayant les memes specificites (ex : un tournoi adulte feminin a 8 joueuses et un autre tournoi adulte feminin a 14 joueuses), ca ne fait que repousser le probleme plus loin.

J'aimerais quelque chose de plus dynamique si possible.
J'espere vraiment qu'il y a une solution autre.

cordialement,
Emmanuel
_____________________
No problems, only soluces
lundi 29 septembre 2008 à 20:15:58 | Re : La Magie des Formulaires MDI - L'Illusion est parfaite

gillardg

Réponse acceptée !
heu quand je disais form fallait lire classe ...

lundi 29 septembre 2008 à 20:36:29 | Re : La Magie des Formulaires MDI - L'Illusion est parfaite

68manu

Je suis pas sur de bien comprendre...

Je crois que c'est ce que je fais non ? :

j'instance du formulaire parent le Formulaire NouveauTournoi (defini par la classe NewTournament, qui est un formulaire predefini)

Dans la classe NouveauTournoi, je gere les evenements de ce formulaire.

Si je me viande, il me faudrait un exemple d'utilisation, parce que la, je suis bouche bee.
Merci d'avance



_____________________
No problems, only soluces

lundi 29 septembre 2008 à 21:13:20 | Re : La Magie des Formulaires MDI - L'Illusion est parfaite

68manu


Je crois qu'a defaut d'etre bouche bee... Je suis fondamentalement c...
comment modifiez vous un dgv qui a la propriete EditModeProgramatically a l'instant ou l'utilisateur veut cliquer dessus ? Et quand les autres controles sont en mode enabled=false.

Comme je le dis si bien il n'y a pas de problemes que des solutions:::
Ce qu'il faut c'est savoir regarder la solution pour comprendre le probleme.

Desole gillardg pour le derangement. Vivement que ce projet se termine, que je puisse enfin prendre quelques jours de vacances... J'en ai besoin !

En tout cas j'accepte la solution proposee, car finalement au probleme expose c'est la bonne solution :-)

___
No problems, only soluces


Cette discussion est classée dans : formulaire, enfant, mdi, formulaires, tournoi


Répondre à ce message

Sujets en rapport avec ce message

Urgent !! Placement d'un formulaire mdi [ par titi ] Certaines applications (telles que WinAmp) viennent se coller automatiquement sur le bord de l'écran quand on l'approche de celui-ci.Est-il possible d Feuille mdi child [ par seb ] Bonjour,voila j'ai un petit soucis.J'ai un programme avec une feuille mdi et les autres formulaire on une propriété mdi child a true.Je souhaiterai ce Formulaires outlook - VB [ par Manolo ] Comment envoyer à partir d'un formulaire personnalisé Outlook la valeur d'un contrôle du formulaire à une application VB ? formulaires année 0! dans access [ par gondrule ] Salut!Dans mon formulaire de recherche, j'ai 5 combo qui ouvrent (avec la propriété on change et une macro), 5 formulaires differents (en mode dialog) mdi modale . [ par osoudee ] j'ai une app mdi et je charge un formulaire en modale je voudrais charger un formulaire en non modale sur celui ci mais avec le mdi actif .aujourd'hui Formulaire Access en VB? [ par jlgh ] Slt!Est-il possible de récupérer les formulaires et les états d'une bdd sous access en VB.6?J'ai créé pas mal de formulaires sous AxS et ca me gonfle access et envoi de paramètre sous 2 formulaires [ par dragon ] j'ai un probl`weme qui petu paraitre assez stupide en VB, masi sous access, ça marche pasje possède 2 formulaires et j,aimerais de un des formulaires LE FORMULAIRE MDI [ par toldo ] SalutJe suis actuellement en train de développer une petite application en visual Basic 6.0 et je ne sais pas comment on utilise une feuille MDI. Tout MDI Parent dans MDI Parent [ par piwy ] Bonjour,je souhaiterai organisée une application en VB.NET de la sorte :J'ai une fenêtre MDI Parent principale qui lance des MDICHild.Le problème c'es Formulaire super lent [ par S16 ] Bonjour,Je suis en train de faire une appli possédant une dizaine de formulaires. Ils sont pour la plupart liés à un contrôle ADO (vers une bdd Access


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales