IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Form MDI et Form MDIChild


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Form MDI et Form MDIChild
    Bonjour,
    Je travaille avec form MDI comme form principale et les autres forms sont des MDI Child. Je veux lors du chargement de quelques form MDIChild verrouiller la forme principal et forcer l'utilisateur de fermer la forme en cour s'il veut revenir à la forme principale.
    Exemple: la forme principale (mère) est frmprincipale
    la forme de saisie d'une facture (fille) frmsaisiefacture
    Lors de l'ouverture du projet frmprincipal se charge puis j'ouvre frmsaisiefacture tout en gardant frmprincipal ouverte aussi mais je veux que frmprincipal soit verrouiller c'est à dire l'utilisateur ne peut revenir au frmprincipal que si frmsaisifacture soit fermer.
    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    Je suppose que tu as un menu(par exemple mnuOpen comme menu principal) dans frmPrincipale pour afficher frmSaisiefacture.
    Dans ce cas, mets dans l'évènement Click du menu qui affiche la feuille file le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frmPrincipale.mnuOpen.Enabled=Not frmSaisieFacture.Visible
    .
    Maintenant, dans la fenêtre code de la feuille frmSaisieFacture, ajoute la procédure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Unload(Cancel As Integer)
     frmPrincipale.mnuFile.Enabled = True
    End Sub

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Peut etre j'ai mal décrit le problème,
    D'aprés votre code je pourrais consulter le menu de frmprincipal sauf que l'enabled de frmsaisiefacture devient false, mais pour moi c'est pas ça, je voudrais que l'utilisateur n'aura plus l'accès de cliquer sur frmprincipal et ces composants ou bien de le fermer ou l'aggrandir, comme si toute la page de frmprincipal devient verrouiller (enabled = false) et elle ne devient accessible que si la forme ou la fenêtre en cour est fermée

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 103
    Points : 16 621
    Points
    16 621
    Par défaut
    A expérimenter, code MDIfrmprincipal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Option Explicit
    Dim MeHeight As Long, MeWidth As Long
     
     
    Private Sub MDIForm_Load()
    MeHeight = Me.Height: MeWidth = Me.Width
    End Sub
    Private Sub MDIForm_Resize()
    If MDIfrmprincipal.Tag = "frmsaisiefacture" Then
        If MDIfrmprincipal.WindowState = vbNormal Then
            MDIfrmprincipal.Height = MeHeight: MDIfrmprincipal.Width = MeWidth
        End If
        If MDIfrmprincipal.WindowState = vbMaximized Then
            MDIfrmprincipal.WindowState = vbNormal
            MDIfrmprincipal.Height = MeHeight: MDIfrmprincipal.Width = MeWidth
        End If
        Else
        MeHeight = MDIfrmprincipal.Height: MeWidth = MDIfrmprincipal.Width
    End If
    End Sub
    Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If MDIfrmprincipal.Tag = "frmsaisiefacture" Then Cancel = True
    End Sub
     
     
    Private Sub MnuFormFille_Click()
    frmsaisiefacture.Show
    End Sub
    code frmsaisiefacture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Load()
    MDIfrmprincipal.Tag = "frmsaisiefacture"
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    MDIfrmprincipal.Tag = ""
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si j'ai bien compris, vous voulez faire une fenêtre modale.
    Cette option devrait être prévue en base.
    N'avez-vous pas une fonction qui ressemblerait à ShowModal à mettre à la place de Show?

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    Salut ProgElecT

    Ton code marche bien pour certaines fonctionnalités, cependant il laisse entre autres la possibilité de réduire et déplacer la feuille MDI.

    Ci-joint une autre alternative qui ne permet aucune action sur la feuille MDI tant que la feuille Form1 est affichée. Il y a suppression du menu système, des boutons Réduire, Agrandir et désactivation du bouton Fermer puis la restauration de tout une fois Form1 déchargée.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Slt l_autodidacte
    J'ai testé votre code mais le menu de la forme principal reste en fonction si la forme fille est affichée. Pour moi je veux bloquer toute la page (càd toute la forme MDIForm) si la forme fille est affiché et non pas seulement bloquer le menu système

  8. #8
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Slt Pierre Dolez,
    J'ai seulement la fonction show

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    bargougui86, Je ne sais pas si j'ai bien compris ton dernier message et celui de Pierre Dolez, mais si c'est pour afficher une form d'une façon modal, tu fais :


  10. #10
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Bonjour justgreat,
    Les feuilles MDIChild ne peuvent pas s'afficher en vbModal
    Mon problème c'est que si j'ouvre ou j'affiche une feuille MDIChild par exemple (frmsaisiefacture) je n'aurai plus l'accès sur la forme MDI (frmprincipale) c'est à dire ni cliquer sur l'interface de la forme principale ni de cliquer sur le menu de la forme, la forme principale devient accéssible que si la fenêtre ou forme fille est fermé (MDIChild)

  11. #11
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    J'ai testé votre code mais le menu de la forme principal reste en fonction si la forme fille est affichée.
    Je ne sais pas comment tu as modifié le code pour l'utiliser mais si tu ajoutes un menu à Form1 de même nom (Fichier) que celui de la MDI, c'est celui de Form1 qui sera affiché et fonctionnel et non pas celui de la MDI.

    Essaie pendant l'exécution de restaurer Form1(bouton Restaurer) et tu verras certes que le menu Fichier de la MDI est désactivé.

    Comme je l'ai dit dans mon post précédent, aucune fonctionnalité de la MDI n'est accessible.

    De toute façon, ce code marche très bien chez moi : Je l'ai téléchargé et revu mais il n'y a aucun problème dedans.

    Si quelqu'un d'autre l'a testé et a éprouvé le même problème, j'aimerais bien qu'il m'en fasse part.

  12. #12
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Je parle de mon projet, j'ai pas un menu dans la forme frmsaisiefacture j'ai seulement un menu dans la forme principale

  13. #13
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 416
    Points : 5 808
    Points
    5 808
    Par défaut
    Je parle de mon projet, j'ai pas un menu dans la forme frmsaisiefacture j'ai seulement un menu dans la forme principale
    Le menu dont j'ai parlé c'était seulement pour voir que c'est celui de frmsaisiefacture qui est a le pas sur celui de la MDI.

    Adapte donc le code à ton projet ou envoie une copie simplifiée de la MDI et et frmsaisiefacture pour qu'on puisse voir de quoi il s'agit.

Discussions similaires

  1. maximiser form paramétré dans form mdi
    Par kgb1917 dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/09/2008, 16h43
  2. Form MDI Fenêtre Form Fille
    Par Patrick42 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/12/2007, 21h01
  3. Deplacement de FORMS dans une FORMS MDI
    Par stephane77fr dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/06/2007, 17h11
  4. Form MDI et form
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/01/2007, 17h08
  5. Form MDI et MDIChild
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/08/2006, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo