Accueil > Forum > > > > Gestion de Form Parents et Enfants
Gestion de Form Parents et Enfants
mercredi 2 juillet 2008 à 16:10:22 |
Gestion de Form Parents et Enfants

Kepone
|
Salut, je rencontre un problème avec mon appli. mon appli est une FAQ. elle contient de nombreuses form dont une FormMDI qui contient toutes les autres. j'ai deux types de form : 1- des formes contenant des listView qui m'affiche une vue de ma base de données MySql et contenant des boutons permettant l'ajout, la modification etc ... 2- des formes de saisie qui permettent d'ajouter ou de modifier des enregistrement de la bdd. Ce que je souhaite c'est écrire une procédure gérant l'appartenance des formes à leur form parents. je m'explique. J'ouvre grace au menu la Form1 qui m'affiche la liste des questions réponses déja saisie. lorsque je clique sur le bouton ajouter, Form2 s'ouvre. Il faut à cette instant que form1 soit Disabled car une fenetre fille de Form1 a été ouverte. Il faut également que lorsque je ferme Form2, Form1 soit Enabled car toutes les fenetres filles de Form1 sont fermé. j'ai déja réaliser sur une appli une gestion des fenetres de ce genre mais c'est hyper galère. surtout que je peux avoir jusqu'a 6 niveaux de fenetre les unes au dessus des autres. du coup si l'utilisateur clique a coté de la bonne form il met en premier plan une form qui n'a rien a voir avec ce qu'il recherche et il est perdu. je voulais en faite savoir si une propriété éxiste permettant de savoir a partir de quel form l'utilisateur a appuyer sur un bouton pour ouvrir la form actuelle. cela me permettrait simplement de mettre dans le Form Unload d'activer la Form parent. je sais pas si je suis claire mais n'hésiter pas à poser vos questions.
|
|
mercredi 2 juillet 2008 à 20:18:29 |
Re : Gestion de Form Parents et Enfants

PCPT
|
salut, umm.. à moitié tu parles de 6 niveaux... tu veux JUSTE que Form1 (la mère) soit disabled après l'ouverture d'un de ses enfants, ou que chaque fenêtre se désactive dès qu'elle en ouvre une autre (et donc se réactive quand sa "fille" se ferme) ? parce qu'à la limite dans ce 2e cas de figure, tu n'as alors jamais vraiment 6 niveaux, si on n'a accès qu'à une fenêtre à la fois. il te suffit juste d'ouvrir les enfants par un FormX.Show VbModal ?? Prenez un instant pour répondre à ce sondage svp
|
|
jeudi 3 juillet 2008 à 09:28:11 |
Re : Gestion de Form Parents et Enfants

Kepone
|
Salut
merci pour ta réponse
je suis dans le deuxième cas c'est a dire que je veux que chaque fenetre se désactive dés qu'elle en ouvre une autre et donc se réactive quand sa fille se ferme.
j'ai donc testé ta solutions avec Form.Show VbModal mais cela ne fonctionne pas car ma form est une MdiChild et on me dit qu'elle ne peut pas etre affichées modalement.
je continue a chercher.
merci
|
|
jeudi 3 juillet 2008 à 12:50:46 |
Re : Gestion de Form Parents et Enfants

PCPT
|
Réponse acceptée !
salut, bon, çà me semble pas mal le fonctionnement est le suivant : toutes tes forms sont ajoutées dans une collection. pas directement, on passe par une structure ( FrmCollectorType) le projet démarre non pas avec ta form MDI mais avec la procédure MAIN (menu projet > propriétés de prohet // objet de démarrage). cette MAIN va ajouter ta MDI à la classe/collection ( Cls_FrmCollector) pour qu'elle ne la désactive pas par la suite. pourquoi? si tu désactives la mère, les filles le sont aussi ensuite la MDImain est chargée et tu vois le principe : dès que tu vas afficher une nouvelle fenêtre fille, tu l'ajoutes d'abord. dès qu'elle se ferme, tu la supprimes de la collection  '---------------------------------------------------- 'MODULE CLASSIQUE, LE PROJET DéMARRE AVEC LA SUB MAIN '---------------------------------------------------- ' Option Explicit Public Frms As New Cls_FrmCollector
Sub Main() Set Frms.FrmMDI = MDIForm1 MDIForm1.Show End Sub
'----------------------- 'CLASSE FrmCollectorType '----------------------- ' Option Explicit
Public Parent As Form Public Child As Form Public Position As Integer
'----------------------- 'CLASSE Cls_FrmCollector '----------------------- ' ' Option Explicit Public FrmMDI As Form
Dim oColl As New Collection
Public Sub AddForm(ByRef oParent As Form, ByRef oChild As Form) Dim oFrm As New FrmCollectorType Set oFrm.Parent = oParent Set oFrm.Child = oChild oFrm.Position = oColl.Count + 1
' ajoute la form oColl.Add oFrm
' désactive If Not (oParent Is Me.FrmMDI) Then oParent.Enabled = False
Set oFrm = Nothing End Sub
Public Sub RemoveForm(ByRef oChild As Form) ' on cherche la form Dim i As Integer Dim oParent As Form For i = 1 To oColl.Count If oColl.Item(i).Child Is oChild Then ' on a le bon Set oParent = oColl.Item(i).Parent If Not (oParent Is Me.FrmMDI) Then oParent.Enabled = True oColl.Remove (i) Exit For End If Next i
Set oParent = Nothing End Sub
Private Sub Class_Terminate() Dim i As Integer For i = oColl.Count To 1 Step -1 oColl.Remove i Next i Set oColl = Nothing Set Me.FrmMDI = Nothing End Sub
'------------------- 'FORM MDI PRINCIPALE '------------------- ' Option Explicit
Private Sub mnu_1_Click() Frms.AddForm Me, Form1 Form1.Show End Sub
Private Sub mnu_2_Click() Frms.AddForm Me, Form2 Form2.Show End Sub
Private Sub mnu_3n_Click() Frms.AddForm Me, Form2 Form3.Show End Sub
Private Sub MDIForm_Unload(Cancel As Integer) Set Frms = Nothing End Sub
'----- 'FORM1 '----- ' Option Explicit
Private Sub Command1_Click() Frms.AddForm Me, Form2 Form2.Show End Sub
Private Sub Form_Unload(Cancel As Integer) Frms.RemoveForm Me End Sub
'----- 'FORM2 '----- ' Option Explicit
Private Sub Command1_Click() Frms.AddForm Me, Form3 Form3.Show End Sub
Private Sub Form_Unload(Cancel As Integer) Frms.RemoveForm Me End Sub
'----- 'FORM3 '----- ' Option Explicit
Private Sub Form_Unload(Cancel As Integer) Frms.RemoveForm Me End Sub
si tu as des questions, n'hésite pas  ++ Prenez un instant pour répondre à ce sondage svp
|
|
jeudi 3 juillet 2008 à 15:35:50 |
Re : Gestion de Form Parents et Enfants

Kepone
|
Salut,
merci pour cette réponse ultra complète.
je vais la tester le plus vite possible te je te tiendrais au courant.
Merci Beaucoup
Kepone
|
|
jeudi 3 juillet 2008 à 18:51:38 |
Re : Gestion de Form Parents et Enfants

Kepone
|
Sa marche niquel.
Sa fait plaisir.
Merci pour ce code très pratique
@+
Kepone
|
|
mardi 14 octobre 2008 à 16:24:15 |
Re : Gestion de Form Parents et Enfants

jamesan
|
Bonjour PCPT,
Première remarque importante : je suis novice dans la programmation VB6, et essentiellement dans la gestion des classes et des objets.
Effectivement, ton code marche nickel.
Je cherche actuellement à faire fonctionner une interface tel que celle de VB6.
Je m'explique. J'aimerai pouvoir utiliser des formulaires tel que le formulaire "Projet" ou le formulaire "Propriétés" qui peuvent apparaitre et disparaitre à volonté en fonction de leur utilisation.
Je présume qu'il faut utiliser la propriété BorderStyle=5 (Sizable ToolWindow).
Ce que je n'arrive pas à réaliser actuellement est :
- l'accrochage sur le bord du MDIChild (ou alors du frmMain)
- la mise à dimension (soit hauteur, soit largeur
- la disparition de la bordure bleue.
Je ne demande pas que l'on m'écrive le code nécessaire, mais simplement des pistes qui me permettrait de pouvoir réaliser mon interface.
D'avance un grand merci de ta réponse, quelle qu'elle soit.
JAMESAN
|
|
mardi 14 octobre 2008 à 16:50:44 |
Re : Gestion de Form Parents et Enfants

PCPT
|
salut jamesan ,
tu auras plus de chances de trouver une solution en posant ta question dans un nouveau topic
en attendant : interface "comme VB"..... mais j'suis pas devant ton PC, et VB a 2 interfaces, la classique (MDI en effet), et la SDI (menu Outils > Options... > étendues > [v] Environnemennt SDI)
dans le premier cas (apparemment), le principe est en fait de jouer dans un container
pour çà regarde les sources parlant de DOCK ou ANCHOR tu peux également regarder dans mes sources ("bouton fermer at runtime" je crois), une classe qui te donnera accès à pas mal de propriétés comme la barre de titre, le bouton dans la barre des tâches, les boutons min max etc..., en cours d'execution ("at runtime")
enfin pour les placements, tes premières recherches devraient déjà t'apporter la solution, en attendant le principe est simple : calculer la taille de la form (me.top, me.left, me.width, me.height) en fonction de l'écran (screen.width, screen.height), et voir si dans cette ZONE tu es proche ou non d'une autre fenêtre (X.top, X.height, pareil..., pour X faisant partie de la collection me.Forms)
bon courage Prenez un instant pour répondre à ce sondage svp 
|
|
mardi 14 octobre 2008 à 17:22:10 |
Re : Gestion de Form Parents et Enfants

jamesan
|
Re bonjour,
Un grand merci pour la rapidité de ta réponse. Je vais explorer les pistes que tu m'as donnée et te tiendrais au courant.
Juste une petite reamrque, si j'arrive à réaliser cette petite interface, je pourrais éventuellement la placer sur le site en faisant référence à ton code de départ. Est-ce OK ? Fais moi signe pour confirmation.
JAMESAN
|
|
mardi 14 octobre 2008 à 18:41:01 |
Re : Gestion de Form Parents et Enfants

PCPT
|
sans problème bien sûr
|
|
Cette discussion est classée dans : form, appli, gestion, form1, parents
Répondre à ce message
Sujets en rapport avec ce message
image de fond d'une form [ par oniros ]
Bonjour,J'affiche une feuille munie d'une image de fond (propriété Picture)Comment faire pour que cette image soit automatiquement à la taille de lafe
problème avec la gestion des fênetres ! [ par mediateur ]
J'aimerai savoir comment vous gérer l'affichage de vos fênetres dans vos application vous utilisez quels événements ?!? form1.show & .hide ou load fo
Gestion dynamique de form [ par fieldy8 ]
Bonjour,je desirerai faire une gestion dynamique de formj'ai une form et une sous-form ma sous-form est de type tableau mais je voudrai pouvoir choisi
Form en arrière plan [ par tex ]
J'aimerais savoir comment faire en sorte qu'un formulaire reste en arrière plan. Je m'explique : dans mon prog je lance des appli externes mais si je
Résolution OK, mais appli bloquée !!! [ par sarrasin ]
J'ai trouvé le code (merci) pour changer de résolution au démarrage de mon appli. Mais à peine la résolution changée, je ne peux plus passer au form s
MAPI Envoie Email multidestinataires- blocage bizarre sur la fermeture d'un form après l'envoi [ par MHz ]
Bonjour,j'utilise MAPI pour envoyer à plusieurs destinataires un mail à plusieurs personnes dans mon code, jusque là tout va bien. Seulement, si je ve
unload en VB.net ou comment fermer un formulaire... [ par guilloo ]
Voila mon appli se lance sur form1 qui est en fait un formulaire demandant un mot de passe pour continuer, mais quand le mot de passe est bon j'aimera
Gestion des messages [ par xavier77 ]
Bonjours, j'ai créer une appli en VB. Cette appli est devenue assez importante : j'ai une centaine et form.... Jusqu'a present, j'utilise la fonction
load et unload en VB6 [ par SLAINE ]
Bonjour,je cherche a enregistrer une form contenant des cases à cocher de sorte que lorsque j'exécute l'exe je retrouve les cases cochées à la fermetu
Affichage de Form en VB.NET [ par BoLyS ]
Salut.J'ai une Form1 avec un bouton et un Form2 déjà crée.Je voudrai faire apparaitre mon form2 en cliquant su rle bouton du form1 et si possible fair
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
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 Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|