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 :

Changer l'arrière plan des forms dans une application MDI


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club Avatar de zentaf
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 65
    Points
    65
    Par défaut Changer l'arrière plan des forms dans une application MDI
    Bonjour,

    Pour mon projets sous VB6(application MDI), j'ai réalisé deux sous-menu : "img1" et "img2" dans la form principale, cocher l'un des deux = affecter une image unique (en exécution) à la propriété picture de toutes les forms (mère et enfants).

    Le problème c'est que quand je coche l'un des deux toutes les forms sont chargées ; moi, je veux changer l'arrière plan des forms sans que ces dernières apparaissent.

    Veuillez me corriger ce problème SVP.

    Sincères salutations.
    Les hommes sont des caisses fermées dont la clé est l'épreuve..

  2. #2
    Membre confirmé Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 568
    Points
    568
    Par défaut
    Citation Envoyé par zentaf
    Veuillez me corriger ce problème SVP.
    Avec du code ca serait plus faisable...


    ~~ La Praline ~~
    ... un choco aboulle ton code mec' !
    ..........................."Membre Chevronné"... non "Chaviré" serait plus juste !!!
    ...............................Avant toute chose => Règles, FAQ, Tuto, Google...
    ...................................................................
    Rock'n Roll

  3. #3
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Alors le truc hyper compliqué :

    Quand tu cliques sur ton menu1 tu affectes à une variable (public si possible) le nom de ton image1 et quand tu cliques sur ton menu2 tu affectes à cette variable le nom de ton image2

    Et quand tu charges une feuille tu affectes à la propriété picture le nom contenu dans la variable.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  4. #4
    Membre du Club Avatar de zentaf
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    C'est pas ça le problème ; Le problème est le suivant:
    Quand je clique sur l'un des sous-menu toutes les feuilles concernées se chargent alors que moi je ne veux pas les faire apparaitre à ce moment... Compris?
    Les hommes sont des caisses fermées dont la clé est l'épreuve..

  5. #5
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Plutot que de me demander si j'ai compris, dis toi que si on ne résoud pas ton problème c'est parce que tu ne donnes pas les clés pour qu'on le fasse. Pas un exemple de code, rien. ON DOIT TOUT DEVINER ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  6. #6
    Membre du Club Avatar de zentaf
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Voici une partie du code (application MDI):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if menu1.checked=true then
    mère.picture=loadpicture("c:\img1.jpg")
    enf1.picture=loadpicture("c:\img1.jpg")
    enf2.picture=loadpicture("c:\img1.jpg")
    end if
     
    if menu2.checked=true then
    mère.picture=loadpicture("c:\img2.jpg")
    enf1.picture=loadpicture("c:\img2.jpg")
    enf2.picture=loadpicture("c:\img2.jpg")
    end if
    Je veux à tout instant(quelque soit la form active) pouvoir changer l'arrière plan de toutes les fenêtres.(mère et enfants).

    Mon problème c que quand une fenêtre quelconque est active et je change l'arrière plan par un clic sur l'un des deux sous-menu, il y aura un changement mais les forms autres que l'active s'affichent... Moi, je ne veux pas ça : je veux que l'arrière plan change sans l'apparition des fenêtres autres que l'active.

    Je pense que j'ai tout détaillé...
    Les hommes sont des caisses fermées dont la clé est l'épreuve..

  7. #7
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Dans MSDN, on peut lire ça :

    Lorsque vous faites référence dans le code à une propriété d'une feuille non chargée, celle-ci se charge automatiquement mais elle n'est pas systématiquement visible, à moins que la propriété MDIChild n'ait la valeur True.
    Donc ne t'étonnes pas trop que tes feuilles apparaissent...

    Il va donc à priori falloir trouver autre chose, un moyen possible (je ne dis pas que ce soit le seul) est donc de stocker dans des variables publiques le nom de l'image que tu veux afficher et le fait qu'une feuille soit chargée ou non (Il y a peut etre d'autres moyens de savoir si une feuille est chargée ou pas mais cette méthode est simple à comprendre...)


    Les variables publiques doivent bien sur etre déclarées dans un module séparé. Là encore je fais pas dans l'élgant, je mets une variable par feuille, y'a évidemment moyen de rendre le truc plus léger mais mon but n'est pas de faire tout le code à ta place..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Explicit
     
    Public Feuille1Chargee As Boolean
    Public Feuille2Chargee As Boolean
    Public ImageDeco As String

    Dans ta feuille MDI tu peux donc avoir ce code, avec 2 menus qui provoquent l'affichage d'une image differente :
    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
     
    Private Sub menu1_Click()
      ImageDeco = "Image1.jpg"
      If Feuille1Chargee = True Then
        Frm1.Picture = LoadPicture(ImageDeco)
      End If
      If Feuille2Chargee = True Then
        Frm2.Picture = LoadPicture(ImageDeco)
      End If
    End Sub
     
    Private Sub menu2_Click()
      ImageDeco = "Image2.jpg"
      If Feuille1Chargee = True Then
        Frm1.Picture = LoadPicture(ImageDeco)
      End If
      If Feuille2Chargee = True Then
        Frm2.Picture = LoadPicture(ImageDeco)
      End If
    End Sub
    Dans tes feuilles filles tu auras un truc comme ça pour mettre en mémoire que la feuille est chargée ou non et pour charger l'image si nécessaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Option Explicit
     
    Private Sub Form_Load()
    Feuille1Chargee = True
    Me.Picture = LoadPicture(ImageDeco)
    End Sub
     
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Feuille1Chargee = False
    End Sub
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je pense que, si une feuille est chargée mais non visible, on doit pouvoir la modifier sans qu'elle apparaisse.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Oui, mais si c'est une feuille fille MDI si tu la charges elle est visible de suite. Il faudrait alors charger toutes les feuilles filles en début de programme et les rendre invisibles immédiatement. C'est faisable bien sur mais en focntion du nombre de feuilles filles, ca peut en faire beaucoup de chargées pour rien.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

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

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    utiliser la collection Forms + l'astuce de monbateau au début de ce topic, c'est pas sorcier
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  11. #11
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Et si , dans l'evenement form_load des toutes les feuilles filles tu faisais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private sub Form_Load()
      Me.Picture=mère.Picture
    End sub
    et dans la feuille mere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if menu1.checked=true then
     mère.picture=loadpicture("c:\img1.jpg")
    else
     mère.picture=loadpicture("c:\img2.jpg")
    end if
    'mettre à jour les feuilles dèjà chargées
    dim frm As Form
    for each frm in Forms
      frm.pciture = me.picture
    next
    ca serait pas plus simple ?
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  12. #12
    Membre du Club Avatar de zentaf
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Delbeke> Dans quel évt inscris-je le code de la form mère?
    Les hommes sont des caisses fermées dont la clé est l'épreuve..

Discussions similaires

  1. Changer l'arrière plan des Label
    Par sousou88 dans le forum Débuter
    Réponses: 6
    Dernier message: 22/02/2010, 11h52
  2. des forms dans une form ?
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 31/10/2006, 17h02
  3. Réponses: 2
    Dernier message: 11/07/2006, 17h08
  4. Réponses: 9
    Dernier message: 21/02/2006, 09h06
  5. Comment afficher des JPEG dans une application Delphi ?
    Par Bouguennec dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/09/2005, 21h18

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