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 :

[VB6] Menu et Form


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Par défaut [VB6] Menu et Form
    Bonjour,

    Y'a t il moyen d'associer un même menu a plusieurs feuilles, sans avoir à a le recréer à chque fois pour chaque feuille.

    En effet je dispose d'une application ayant un nombre assez important de feuilles, avec un menu assez conséquant, avoir à le recréer à chaque fois, ainsi que les actions qui lui sont associées m'embête légérement...

    Note : Je ne peux pas passer par MDI (car c'est moche et c'est pas dans le contexte de mon programme).

  2. #2
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut Re: [VB 6] Menu et Form
    Citation Envoyé par pier*
    Note : Je ne peux pas passer par MDI (car c'est moche et c'est pas dans le contexte de mon programme).
    c'est justement ce que je t'aurais proposé
    Je ne vois pas d'autre solution que de créer le menu dans chaque form dan ce cas

    Mais pour aller un peu plus vite, voici une petite astuce :

    - ferme ton IDE VB6 et ton projet
    - Vas dans le répertoire de ton projet
    - ouvre ta feuille qui contient le menu à dupliquer (le .frm) avec le Bloc-note ou Wordpad (click droit, Ouvrir avec ...)
    - ensuite tu fais du copier/coller de tous les VB.Menu et de toutes les Sub correspondantes aux menus dans tes autres feuilles, ouvertes elles aussi en mode texte
    Attention tout de même de copier aux bons endroits, mais tu vas gagner un temps fou, au lieu de retaper le menu dans toutes tes forms

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Par défaut Re: [VB 6] Menu et Form
    Citation Envoyé par ThierryAIM
    Citation Envoyé par pier*
    Note : Je ne peux pas passer par MDI (car c'est moche et c'est pas dans le contexte de mon programme).
    c'est justement ce que je t'aurais proposé
    Le probléme de MDI c'est que ca fait une fenêtre inclus dans une autre fenêtre, ca va pas trop et en plus je trouve ca particuliérement laid pour un programme qui n'aura toujours qu'une feuille active

  4. #4
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    tu es tout à fait libre de faire ce que tu veux avec ton programme

    Si tu ne veux pas de MDI, fais comme je t'ai dit plus haut, tu vas gagner du temps

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Par défaut
    En faites, tu avais raison. MDI est parfaitement adapté à la situation. C'est moi qui avait mal interprété son principe en croyant que j'allais me retrouver forcément avec une fenêtre incluse à l'intérieur d'une autre.
    (ce qui est le cas, mais quand on enléve les borders des fenêtres enfant ca ne se voit pas. Donc c'est propre comme je le voulais et c'est parfait )

    Mais maintenant j'ai un autre probléme, quand je jongle entre mes fenêtres, c'est à dire lorsque je désire en choisir une nouvelle à partir du menu, il faut que je ferme la précédente, et le seul moyen que j'ai trouvé c'est de créer une variable lastopen (de type Form) et d'affécter a cette variable la valeur de la fenêtre actuellement ouverte.

    Comme ca je fais un Unload de la fenêtre courante avant de charger la nouvelle fenêtre.

    Probléme : Impossible d'affécter une valeur à cette variable, j'ai une erreur du type : invalid use of property.

  6. #6
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    un petit truc de ce genre ferait-il ton affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim frm As Form
        For Each frm In Forms
            If frm.Name <> "MDIForm1" Then Unload frm
        Next

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Par défaut
    C'est parfait merci .

    Mais j'ai encore un tout petit probléme (le gars chiant désolé ).

    Ma feuille MDI ne dispose plus de la propriété BorderStyle ... J'avoue que ca me dérange car je souhaite qu'elle ne soit pas redimensionnable.

  8. #8
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    bon, si ya que ca pour te faire plaisir :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Const SC_MAXIMIZE = &HF030
    Private Const SC_MINIMIZE = &HF020
    Private Const SC_MOVE = &HF010
    Private Const SC_RESTORE = &HF120
    Private Const SC_SIZE = &HF000
    Private Const SC_CLOSE = &HF060
    Private Const MF_BYCOMMAND = 0
     
    Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
     
     
    Private Const GWL_STYLE As Long = -16
    Private Const WS_MAXIMIZEBOX = &H10000
    Private Const WS_MINIMIZEBOX = &H20000
    Private Const WS_SYSMENU = &H80000
     
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
                                           (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
                                           (ByVal hwnd As Long, ByVal nIndex As Long, _
                                            ByVal dwNewLong As Long) As Long
     
    Private Sub MDIForm_Load()
    Dim hMenu As Long
        '-- Supprimer les boutons Minimize et Maximize de la MDIForm
        SetWindowLong hwnd, GWL_STYLE, GetWindowLong(Me.hwnd, GWL_STYLE) Xor WS_MAXIMIZEBOX
        SetWindowLong hwnd, GWL_STYLE, GetWindowLong(Me.hwnd, GWL_STYLE) Xor WS_MINIMIZEBOX
     
        '-- Supprime les élément du menu système de la MDIForm
        hMenu = GetSystemMenu(Me.hwnd, 0)
        Call DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
        Call DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND)
        Call DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND)
        Call DeleteMenu(hMenu, SC_RESTORE, MF_BYCOMMAND)
     
    End Sub
     
    Private Sub MDIForm_Resize()
    '-- Fige les dimensions de la feuille
        On Error Resume Next
        Me.Width = 5000
        Me.Height = 4000
    End Sub

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Par défaut
    Comment dire... Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/10/2005, 09h38
  2. [VB6] menu contextuel dynamique
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/07/2003, 11h53
  3. [VB6] menu contextuel sur clique droit souris
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/07/2003, 11h07
  4. [VB6] Déplacer la form sans cliquer sur la barre de titre
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/11/2002, 02h09
  5. [VB6] [MDI] Modifier form en MDIform
    Par fikou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/09/2002, 13h48

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