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] Changer l'affichage d'un container


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut [VB6] Changer l'affichage d'un container
    Bonjour à tous,

    Je vais essayer d'être le plus descriptif possible, mais je crois que j'aurai un peu de misère. Je m'en excuse d'avance.

    J'ai fais un TreeView (l'aide en ligne m'a grandement aidé sur ce coup ^^) pour une feuille de configuration de mon programme. En fait, son but est, lors du click d'un item, de changer le container visible (par exemple, un frame (cadre)) pour un autre. Ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     ' Mon TreeView se nomme tvConfig
    Private Sub tvConfig_Click()
        Select Case tvConfig.Nodes.Item(tvConfig.SelectedItem.Index).Key
         Case "config_connection_config"
          fraConfig_Connection_Config.Visible = True
          fraConfig_Connection_adv.Visible = False
          ' etc...
         Case "config_connection_adv"
          fraConfig_Connection_Config.Visible = False
          fraConfig_Connection_adv.Visible = True
          ' etc
        End Select
    End Sub
    Deux choses avec ce code :
    1) C'est très chiant à écrire
    2) Il ne marche pas. La première fois que je clique, le bon cadre apparaît, mais par la suite, tout disparait. Un espace complètement vide.

    Je me demandais donc s'il y avait un meilleur moyen pour écrire ce code.

    Merci d'avance,

    Thunder

    p.s.: je suis parti pour les deux ou trois prochains jours. Je ne pourrai donc pas répondre.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    1) ce n'est pas dans la gestion (par le code que tu nous montres là) de visible/non visible qu'est ton problème mais ailleurs, très manifestement.
    2) on ne voit pas de case else

    compte tenu de ce qui est dit plus haut, c'est tout ton code qu'il nous faudra voir, à moins que tu ne découvres toi-même où, ailleurs dans ton code, tu te fais un croche-pieds avec la gestion de la propriété visible de ton cadre.

  3. #3
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    À moi non plus, il m'est impossible de voir d'où vient le problème... Une suggestion cependant, Si tu as plus de deux Frames à gérer, je crois qu'il sera fastidieux de les mettre tous invisibles pour ensuite rendre visible le bon uniquement. Le plus simple est qu'ils soient tous de dimensions identiques et de les emplier. Lorsque tu veux en afficher un tu y va avec ZOrder qui le mets tout bonnement au dessus de la pile.

    Exemple:

  4. #4
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Je ne connaissais pas la propriété ZOrder, merci ^^

    Mais le problème, c'est qu'il faut que je fasse tous_mes_cadres.visible = False parce que je ne sais pas quel était le dernier cadre... Enfin, vive les variables !

    Je test et je reviens ^^

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Ecoute, ami :

    Intéresse-toi aux groupes indexés (ici de cadres) de sorte à gérer agilement.

    Reviens-nous après avoir un peu cogité sur ce point et proposes-nous, si besoin en est encore, un code en résultant... Nous t'aideront alors bien qu'il s'agisse là d'une "affaire" ultra simple.

  6. #6
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Je n'ai pas tout fait, j'ai seulement ajouté deux cadres pour tester.

    Mais tout à l'air de marcher parfaitement
    Code final :

    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
    Private Sub tvConfig_Click()
        Static Frame As Frame
     
        Select Case tvConfig.Nodes.Item(tvConfig.SelectedItem.Index).Key
            Case "config_connection_config"
                If Not Frame Is Nothing Then Frame.Visible = False
                Frame1.Visible = True
                Frame1.ZOrder
                Set Frame = Frame1
            Case "config_connection_adv"
                If Not Frame Is Nothing Then Frame.Visible = False
                Frame2.Visible = True
                Frame2.ZOrder
                Set Frame = Frame2
        End Select
    End Sub
    Encore, s'il y a un moyen encore plus simple de le faire, je suis partant, mais celui-ci marche très bien donc je peux m'en contenter

  7. #7
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Y'a un genre de problème, maintenant ça ne marche plus.

    Je clique une fois, tout est correct, mais dès que je clique sur un autre noeud de ma treeview, et que je reclique sur ce noeud, ça ne marche plus.

    Le code :
    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
    Private Sub tvConfig_Click()
        Static Frame As Frame
     
        Select Case tvConfig.Nodes.Item(tvConfig.SelectedItem.Index).Key
            Case "config_connection_config"
                If IsSet(Frame) Then Frame.Visible = False
                Set Frame = fraConfig_Config
                Frame.Visible = True
                Frame.ZOrder
            Case "config_connection_adv"
                If IsSet(Frame) Then Frame.Visible = False
                Set Frame = fraConfig_Adv
                Frame.Visible = True
                Frame.ZOrder
        End Select
    End Sub
    IsSet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function IsSet(ByVal sObject As Object) As Boolean
        IsSet = IIf(sObject Is Nothing, False, True)
    End Function

  8. #8
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut


    J'ai trouvé le problème, j'avais placé, par erreur, mon cadre dans mon autre cadre.

    Désolé du "up" inutile

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

Discussions similaires

  1. JPanel, changer le JPanel d'un Container
    Par kichemans dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/01/2006, 12h58
  2. [VB6] Changer fond d ecran
    Par Seth77 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/10/2005, 14h53
  3. [Swing] Changer le contenu d'un Container via un menu
    Par TheSeb dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 07/12/2004, 23h07
  4. [VB6]Changer la couleur d'une ligne d'un ListView
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/03/2003, 17h02
  5. Réponses: 2
    Dernier message: 17/10/2002, 16h16

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