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 :

Portées des propriétés-Relations entre objets


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Génie Civil
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Génie Civil

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Par défaut Portées des propriétés-Relations entre objets
    Bonsoir à tous
    J'ai une questions qui concerne la portée des propriétés d'un objet que je n'arrive pas à régler.

    J'ai un Objet1 défini par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Option Explicit
    Public mListDiam As cColInteger
    Private mFerr As New cColObj11
    La collection cColInteger est une liste d'entiers

    Un Objet11 défini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Option Explicit
    Private mIndDiam As Integer         ' Indice de Diamètre
    Private mRayon As Integer           ' Rayon
    avec sa collection

    La propriété mIndiam repère l'indice du diamètre dans la collection mListDiam

    Mon pb réside dans le fait que la propriété mRayon dépend de la valeur de
    mListDiam(mIndDiam)

    Lors de l'exécution VB me dit que mListDiam n'est pas défini.
    C'est en fait un (simple) pb de portée mais comment faire pour que la propriété mListDiam soit vue par tous les objets de la collection mFerr créée dans Objet1. C'est une mise en commun d'une propriété l'objet principal à tous les sous-objets.
    Je souhaite faire ceci car Objet11 est une brique pouvant être utilisée dans plusieurs type d'Objet1-Objet2.....
    j'ai essayé avec Friend mais sans résultats. Aussi avec Parent mais je n'ai pas su l'utiliser dans la propriété mRayon car je n'ai pas le nom de l'objet en cours pour lui réclamer le nom de sont parent

    Merci

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Le problème est que tu ne precises pas ou sont fait les 2 declarations distinctes (au vue de 2 Option Explicit)
    Si mListDiam n'est pas declaré dans un module.bas mais dans un Form, VB te dit que mListDiam n'est pas défini, normal, une declaration dans un Form, même en Public, sa portée n'est que dans le Form ou elle est declarée.
    Dans un Module.bas, la porté est pour toutes les Forms composant ton Programme.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Génie Civil
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Génie Civil

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Par défaut
    La déclaration de mListDiam est faite dans une classe.
    En effet je souhaite que mon objet Objet1 travaille de manière indépendante d'un quelconque affichage.
    De même que Objet11 ou cInteger qui possède sa collection sous forme de classe.
    C'est en effet un pb de relation entre des objets définis en temps que classes distinctes. Les classes Objet11, cInteger avec leurs collections sont utilisés dans des objets divers. Ce sont vraiment des briques.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Je n'arrive pas a comprendre tes objets/collections.
    Je suppose que tu as une erreur de conception car tout objet doit être parfaitement independant (Il n'est pas possible qu'une propriété soit partagée entre des classes) c'est un des principes de base de la programmation objet.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Génie Civil
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Génie Civil

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Par défaut
    Delbeke

    En effet il doit y avoir un bug de conception, car c'est ce que je cherche à créer.
    Je vais tenter d'expliquer ce que je souhaite faire tu pourras peut être m'aiguiller pour modifier le code.

    J'ai une classe qui défini la forme d'un acier nommée cBarre (pour faire du ferraillage de béton armé).
    Une pièce de béton armé est donc constituée d'un grand nombre de d'aciers, c'est la Collection d'aciers. J'ai donc une classe cColBarres qui s'occupe d'ajouter.... les aciers.

    Une des caractéristiques des aciers est son diamètre. Une conséquence de ce diamètre est le rayon ce cintrage.

    Selon les pays et les types de pièces de béton armé (poteaux, poutres, murs....) tous les diamètres d'aciers disponibles ne sont pas les mêmes.

    Donc pour gérer ceci je souhaite que la base des aciers utilisables soit contenue dans l'objet Poteau/Mur... C'est une collection d'entiers.

    Dans chaque objet cBarre de la collection cColBarre (elle même contenue dans Objet Poteau ou Poutre) je ne stocke que l'indice du diamètre de la collection des aciers disponibles pour une pièce de béton armé.
    Pour calculer le rayon de cintrage d'un acier particulier je doit donc connaitre son diamètre qui lui est contenu dans l'objet Poteau/Poutre.

    Une solution rouleau compresseur consisterai à inclure à chaque objet cBarre la liste des aciers disponibles afin de ne pas faire référence à une variable hors de l'objet.

    Merci encore de ta remarque.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Désolé, ce n'est toujours pas clair.
    Une chose a savoir, un objet peut avoir une propriété de type collection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private m_Aciers As Collection
    Public Property Get Aciers() As Collection
      Set Aciers = m_Aciers
    End Property
    Public Property Set Aciers(ByVal vNewValue As Collection)
      Set m_Aciers = vNewValue
    End Property
    Dans ce cas n'est stocké dans l'objet que le pointeur de la collection

    Peut être que çà t'aidera

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/09/2007, 10h53
  2. [VBA] récupérer tout les noms des propriétés d'un objet
    Par ooyeah dans le forum Général VBA
    Réponses: 6
    Dernier message: 05/03/2007, 16h17
  3. Relation entre objets rollback et buffer cach
    Par Mehdilis dans le forum Oracle
    Réponses: 1
    Dernier message: 04/09/2006, 08h33
  4. [iBATIS] Relations entre objets
    Par Tourix dans le forum Persistance des données
    Réponses: 8
    Dernier message: 25/08/2006, 11h17
  5. [VB6] Modification des propriétés d'un objet de form dans un module
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 09/06/2006, 09h46

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