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 :

Utilisation de set


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Par défaut Utilisation de set
    Bonjour,

    Je suis en train de faire un test en VB6 qui va débouché à une intégration dans un programme que je suis en train d'effectuer.

    Afin de comprendre la programmation objet et ses débouchés sur VB6, J'ai mis en œuvre un petit programme qui me permet simplement d'afficher des données résultant d'un tableau.

    Je m'explique, j'ai un objet que j'ai appelé tabHoraire qui possède trois propriétés ainsi que trois événements. Ses propriétés sont JJMMAAAA qui représente la date, NumManager qui représente un numéro unique de manager et NomTranche qui représente le nom dune tranche horaire unique aussi.

    Cependant, j'aurais besoin d'un objet pour chaque manager qui se situe dans une base de données. Etant donné que chaque Manager est identifié par un numéro unique, j'ai donc décidé de faire un tableau(numManager). Ceci dit, VB6 n'accepte pas les tableaux en tant qu'objet qui prend en compte des évènements. J'ai donc créé un tableau parallèle issus de la même classe qui serait instancié par l'objet évènementié.

    Jusque là tout va bien, cependant, lorque j'effectue un set tabHoraireAff(0), le tableau est instancié même hors fonction. C'est assez difficile à expliquer et je pense que mon code vous en dira plus.

    Mon formulaire
    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
     
    Option Explicit
     
    Dim WithEvents tabHoraire As clsHoraire
    Dim tabHoraireAff(10) As clsHoraire
     
    Private Sub InitVariables()
        Set tabHoraire = Nothing
    End Sub
     
    Private Sub Form_Load()
        InitVariables
        Set tabHoraire = New clsHoraire
        tabHoraire.JJMMAAAA = "08/08/2008"
        tabHoraire.nom_tranche = "O"
        tabHoraire.num_manager = 2
    Call Affiche(tabHoraire, 0, "O", 2, "08/08/2008")
    Call Affiche(tabHoraire, 1, "C", 5, "09/08/2008")
        lbJJMMAAAA2.Caption = lbJJMMAAAA2.Caption & tabHoraireAff(1).JJMMAAAA
        lbNumManager2.Caption = lbNumManager2.Caption & tabHoraireAff(1).num_manager
        lbNomTranche2.Caption = lbNomTranche2.Caption & tabHoraireAff(1).nom_tranche
    lbJJMMAAAA.Caption = lbJJMMAAAA.Caption & tabHoraireAff(0).JJMMAAAA
    lbNumManager.Caption = lbNumManager.Caption & tabHoraireAff(0).num_manager
    lbNomTranche.Caption = lbNomTranche.Caption & tabHoraireAff(0).nom_tranche
    End Sub
    Private Sub Affiche(ByVal tab_ho As clsHoraire, i As Integer, tranche As String, manager As Integer, JJMMAAAA As String)
    tab_ho.nom_tranche = tranche
    tab_ho.num_manager = manager
    tab_ho.JJMMAAAA = JJMMAAAA
     Set tabHoraireAff(i) = tab_ho
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
        Set tabHoraire = Nothing
        End
    End Sub
    Ma classe
    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
     
    Option Explicit
     
    Private lJJMMAAAA As String
    Private lnum_manager As Integer
    Private lnom_tranche As String
     
    Public Event JJMMAAAAAjout()
    Public Event NumManagerAjout()
    Public Event NomTrancheAjout()
     
    Public Property Let JJMMAAAA(ByVal vdata As String)
    lJJMMAAAA = vdata
    RaiseEvent JJMMAAAAAjout
    End Property
     
    Public Property Get JJMMAAAA() As String
        JJMMAAAA = lJJMMAAAA
    End Property
    Public Property Let num_manager(ByVal vdata As Integer)
    lnum_manager = vdata
    RaiseEvent NumManagerAjout
    End Property
     
    Public Property Get num_manager() As Integer
        num_manager = lnum_manager
    End Property
    Public Property Let nom_tranche(ByVal vdata As String)
    lnom_tranche = vdata
    RaiseEvent NomTrancheAjout
    End Property
     
    Public Property Get nom_tranche() As String
        nom_tranche = lnom_tranche
    End Property
    Et voici ce que ça me donne :


    Voila, le problème, c'est que même si la valeur est rentré dans affiche comme ByVal, la valeur 0 du tableau continue a changer en fonction de tab_ho.

    Si vous avez une solution, cela pourrais m'aider grandement. Je vous remerci d'avance pour vos réponses

    Albat90

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Par défaut
    Coucou, c'est encore moi

    Après plusieurs essais, je suis arrivé à un résultat satisfaisant, en faite, j'ai trouvé ce que je voulais.

    j'ai enfin réussit à réaliser un objet sous forme de tableau avec plusieurs propriétés de différent types.

    En faite, pour arriver à mes fins, je réinitialise à chaque fois mon objet évènementié dans ma procédure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Affiche(ByVal tab_ho As clsHoraire, i As Integer, tranche As String, manager As Integer, JJMMAAAA As String)
    
    tab_ho.nom_tranche = tranche
    tab_ho.num_manager = manager
    tab_ho.JJMMAAAA = JJMMAAAA
     Set tabHoraireAff(i) = tab_ho
     Set tabHoraire = New clsHoraire
    End Sub
    Et voici le résultat



    Maintenant, j'ai encore pas mal de truc a modifier pour l'adapter à mon programme

    Albat90

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/04/2007, 13h59
  2. Utilisation des set
    Par Ikit dans le forum C++
    Réponses: 16
    Dernier message: 22/11/2006, 16h12
  3. Utilisation des sets
    Par Original Prankster dans le forum SL & STL
    Réponses: 6
    Dernier message: 08/02/2006, 21h28
  4. utiliser les set en C++
    Par yaskiki dans le forum C++
    Réponses: 2
    Dernier message: 05/10/2005, 16h04
  5. utilisation de set locale
    Par ColonelHati dans le forum C
    Réponses: 7
    Dernier message: 02/05/2005, 14h25

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