Accueil > Forum > > > > La Magie des Formulaires MDI - L'Illusion est parfaite
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 constantesNouveauTournoi.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_ChildFormNumberIf DlgBox1.ShowDialog = Windows.Forms.DialogResult.Cancel ThenExitSubEndIfDlgBox1.Dispose() NouveauTournoi.Show() EndSubExtrait 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
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTVIEW TAILLELISTVIEW TAILLE par ShayW
Cliquez pour lire la suite par ShayW
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|