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 - gestion des menus d'une application


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut VB6 - gestion des menus d'une application
    bonjour,

    je gères les menus d'une application à partir d'une base access.

    la table des item des menus comporte les attributs suivant :

    - numéro d'ordre de l'item (déclaré en format texte)
    - Libellé de l'item (déclaré en format texte)
    - nom de la feuille associée à l'item (décalré en format texte)

    en debut de programme, je stocke à partir du résultat d'une requête dans 3 tableaux dynamiques (1 par attribut de la table) l'ensemble des caractéristiques des item.

    valeurs à titre d'exemple

    Tabitem(1) = "1"
    Tabitem(2) = "2"

    TabLibel(1) = " - Choix numéro 1"
    TabLibel(2) = " - Choix numéro 2"

    TabFrm(1) = "Feuille1"
    TabFrm(2) = "Feuille2"


    J'affiche correctement, sur ma feuille principale, les numéros d'item et les libellés associés.

    si l'utilisateur choisi l'item 1, je dois montrer la feuille "feuille1". (Les feuilles "feuille1", "feuille2" ... sont présentes dans le projet.)

    pour cela j'ai déclaré une variable Frm

    Dim Frm as Form

    Set Frm = tabFrm(I) (avec I égal au choix effectué par l'utilisateur)
    Frm.show

    Ce code pose problème puisque je récupère une chaine et non un objet comme valeur de TabFrm(I). En déclarant le tableau TabFrm comme une 'collection' de Form, j'ai un message d'erreur 'impossible de modifier une valeur en lecture seule'

    pouvez vous m'indiquer une piste de résolution

    merci et meilleurs voeus à tous

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut,

    je réponds en vitesse car je n'ai pas le temps de creuser, sorry : stocker le nom de tes feuilles dans un tableau de String ne te permettra pas de manipuler les objets correspondants, c'est normal : essaye plutôt de gérer tes form via une Collection. La collection de VB Forms risque de ne pas te convenir, car elle ne gère que les feuilles chargées je crois ...

    Ex d'utilisation de Forms :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For each m in Forms
        debug.Prinf m.name
    Next m
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    J'ai été confronté au problème et n'ai pas trouvé de solution sans connaitre par avance le nom des forms.
    En effet il y a plusieurs difficultés:
    1°/ Chaque menu est indépendant. Donc on ne peut parcourir que les item d'un menu donné, celui sur lequel l'utilisateur a cliqué. Une collection menu ne contient que les seuls item du menu en cours.
    2°/ La collections Forms ne comprend que les feuilles ouvertes de l'application, comme l'a pressenti XO. Comme on veut en ouvrir une, on est mal
    Donc, dans le code de chaque menu, j'appelle une procédure centralisée, ici la orocédure d'une toolbar (mais cela pourrait-être n'importe quelle sub), à qui je transmet une valeur prédéterminée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub mnuDataControl_Click()
      Call Toolbar1_ButtonClick(Toolbar1.Buttons.Item(1))
    End Sub
    La procédure ToolBar agira donc comme si l'utilisateur avait cliqué sur l'outil dont l'item correspond à la valeur transmise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
     
      Dim MyForm As Form
      Dim FormShow As Form
     
      Select Case Button.Key
        Case "DataControl"
          If pictDidact.Visible = True Then pictDidact.Visible = False
          Set FormShow = frmDonnées
        Case "ChaineSQL"
          If pictDidact.Visible = True Then pictDidact.Visible = False
          Set FormShow = frmSQL
    ...
    Voici le mieux que j'ai trouvé. Mais comme déjà dit, il faut connaitre les forms qui pourront être ouverte en préalable.

    Je vais suivre avec intérêt ce fil, espoir de trouver mieux.

  4. #4
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Je viens de penser à la collection Controls. On peut y récupérer les propriétés de chaque contrôle (dont le nom et l'index). Peut-être une piste, encore que je discerne mal laquelle

Discussions similaires

  1. Gestion des droits dans une application Java
    Par Donaldo dans le forum Langage
    Réponses: 10
    Dernier message: 14/02/2008, 18h15
  2. XML/XSL et gestion des fichiers dans une application Web
    Par fatenatwork dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 01/02/2008, 14h09
  3. [C#] Gestion des langues d'une application
    Par therock dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/05/2006, 08h47
  4. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  5. Gestion des Utilisateurs depuis une application
    Par LLaurent dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/03/2003, 16h29

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