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.NET Discussion :

Créer des exécutables et les lier [Débutant]


Sujet :

VB.NET

  1. #21
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Quand je genere mon programme de visual studio, j'obtient 3 fichier dans le dossier "Bin", un .dll, un .pdb et un .xml mais j'ai pas de fichier .tlb.

  2. #22
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Problème résolu ^^

    J'ai exécuter Visual Studio en Administrateur comme tu la dit ^^ et le fichier que je voulais est venu !!

  3. #23
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Vraiment, un grand Merci parce que j'ai vu que tu as postuler sur le forum parfois a 4H du matin et je te remercie beaucoup pour tous ton travail car tu m'avance au moins de 2 ou 3 semaine de boulot, je pensé pas que j'aller finir avant la fin avril et je suis juste le 9 ^^

    J'ai testé ton programme, j'arrive à ouvrir une Form de type Visual studio 2010 sur un programme VB6 donc en gros toute les procedure qui se trouve dans le from pourrant marché sans souci, j'ai tjs pas essayé le transfert de donnée entre les deux programmes (VB6 et Visual Studio) mais avec ce que j'ai compris et étant données que mon programme utilise une classe qui fait appel qu'a des propriétés, normalement j'aurai pas trop de probleme.


    Encore une fois merci, je prend la fin de la journée pour finir mon programme et je teste sa le plus rapidement possible.

  4. #24
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Le plus simple est de placer ce qui était dans le module, Dans la classe. Après, l'autre solution, tu peux aussi référencer le module, mais cela va compliquer ton travail.
    Justement j'ai des variables Globale (Public) dans mon module qui sont utiliser dans mes deux Froms et je peut pas me permettre de les retirer sous risque de devoir changer plus de 500 lignes de codes. Si je met ces variables dans la class, ils ne seront pas pris en compte et le programme ne marche pas du coup.

    Je vois pas ou placer mes variables et si je dois laisser le module, je voie pas comment le référencer.

  5. #25
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Référencer le module = Implémenter le module ???

    J'ai pas très bien compris ce qu'il faut faire quand tu dis qu'il faut référencer le module.

    Je vais essayer de viré les variables qui se trouve dans le module et trouver un système D !! Je suis pas loin du bute avec ce projet la !!

  6. #26
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Sans l'ensemble de ton programme c'est difficile de donner une solution.
    Citation Envoyé par dragondumond Voir le message
    Justement j'ai des variables Globale (Public) dans mon module qui sont utiliser dans mes deux Froms et je peut pas me permettre de les retirer sous risque de devoir changer plus de 500 lignes de codes. Si je met ces variables dans la class, ils ne seront pas pris en compte et le programme ne marche pas du coup.

    Je vois pas ou placer mes variables et si je dois laisser le module, je voie pas comment le référencer.
    Citation Envoyé par dragondumond Voir le message
    Référencer le module = Implémenter le module ???

    J'ai pas très bien compris ce qu'il faut faire quand tu dis qu'il faut référencer le module.
    C'était de faire un lien entre ta classe et les variables de ton module. Ta classe peut effectivement juste servir d'interface avec vb6 et tu complétes les variables de ton module avec les valeurs récupérées. Puisqu'elle sont déclarées publiques elles sont visibles de partout.
    Il me semble que ce n'est pas une bonne idée. Mais il faut y réfléchir car finalement même si cela est relativement simple ce n'est pas très propre. S'il te faut reprendre le programme plus tard pour remettre propre cela risque d'être compliqué.

    Citation Envoyé par dragondumond Voir le message
    Je vais essayer de viré les variables qui se trouve dans le module
    Bonne idée. (le dictionnaire représente toutes tes alarmes, tu as un exemple pour les passer aux fenêtres. tu ne dois pas avoir beaucoup d'autre variables)
    Après celle qui ne servent que dans ton programme en interne peuvent rester dans ton module. (mais attention si tu comptes transformer ton module en classe shared fait le le plus tôt possible, pour éviter d'avoir plus de manip à faire plus tard)

    Citation Envoyé par dragondumond Voir le message
    et trouver un système D !! Je suis pas loin du bute avec ce projet la !!
    Réflechi bien au besoin et à la solution avant de te lancer. (pas de bidouille )
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #27
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    J'ai créer ma classe Alarmes dans un projet de type bibliothèque, j'avais déjà une classe Alarmes dans mon ancien projet mais cette class était dans un module mais j'avais aussi deux Forms qui gèrent mes alarmes genre verification, trie, etc....
    Attention les vérifications ne doivent pas être programmés dans les fenêtres. (par contre le tri ok puisque s'est juste une façons de présenter les données)
    Cela doit être fait dans la classe Alarmes qui contient les données des alarmes avant de passer les données à la fenêtre pour l'affichage.
    Idem pour les calculs.

    S'il est nécessaire de déclencher des actions sur la classe depuis les fenêtres (calculs par exemple), il faut gérer des évènements.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  8. #28
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bon, je commence à avoir une vue d'ensemble de ton programme.

    Alors je dirai, attention les exemples ou idées que nous te donnons ne sont que réponses à des problèmes ponctuels. Il ne faut pas se baser la dessus pour définir la structure de ton programme.

    Voici une idée par rapport à ce que je connais (cela te donne un exemple)

    Une classe représentant les données de base d'une alarme.
    Une classe représentant toutes les alarmes (liste données de base d'une alarme + procedures et fonctions qui manipules les alarmes)
    Une classe alarme interface qui permettra de récupérer les info de vb6.
    Une interface (nécessaire pour vb6).
    Les classes form de visu.

    Exemple en pratique

    Une classe de base alarme (UneAlarme)
    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
    Public Class UneAlarme
      'IdAlarm 
      Private mIdAlarm As String
      Public Property IdAlarm() As String
        Get
          Return mIdAlarm
        End Get
        Set(ByVal value As String)
          mIdAlarm = value
        End Set
      End Property
      'Ack 
      '...
                    'TimeIn
                    'Unit 
                    'ModuleParam 
                    'Description 
                    'NiveauAlarm 
                    'Message 
                    'Priority 
                    'Seuil 
                    'Etat 
                    'Supprimer 
    End Class
    Une classe de la liste des alarmes (DesAlarmes)
    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
    'Peut aussi contenir un ensemble de variables liées aux alarmes venant de vb6 ou interne.
    Public Class DesAlarmes
      Private mDicoAlarmes As Dictionary(Of String, UneAlarme) = New Dictionary(Of String, UneAlarme)
      Public Property DicoAlarmes() As Dictionary(Of String, UneAlarme)
        Get
          Return mDicoAlarmes
        End Get
        Set(ByVal value As Dictionary(Of String, UneAlarme))
          mDicoAlarmes = value
        End Set
      End Property
      ' des propriétés qui correspondent à tes variables globales (seulement celles qui sont liées aux alarmes)
      ' propriétés ...
      '...
     
      Public Sub verif()
        '...
      End Sub
      Public Sub Calcul()
        '...
      End Sub
    End Class
    Une listof aurait pu suffire à mon avis mais bon avec le dictionnaire c'est simple de retrouvre une alarme par son nom.

    Une classse InterfaceAlarme qui fait le lien avec vb6 puisqu'il faut impérativement une 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
    ''' <summary>La classe alarme visible hors bibliothèque.</summary>
    Public Class InterfaceAlarme
      Implements IAlarmes ' contrat entre classe et interface.
      Private fenAlarmes As frmAlarmes = New frmAlarmes
      Private MesAlarmes As DesAlarmes = New DesAlarmes ' a voir la portée
     
      ' rajouter les autres propriétés à la sub
      Public Sub AjoutAlarme(ByVal UnId As String, ByVal LaPriorite As Integer) _
      Implements IAlarmes.AjoutAlarme ' + les autres porpriété
        Dim NouvelleAlarme As UneAlarme = New UneAlarme
        NouvelleAlarme.IdAlarm = UnId
        NouvelleAlarme.Priority = LaPriorite     ' etc ...
        MesAlarmes.DicoAlarmes.Add(NouvelleAlarme.IdAlarm, NouvelleAlarme)
      End Sub
     
      Public Sub GestAlarme() _
      Implements IAlarmes.GestAlarme
        fenAlarmes.MesAlarmes = MesAlarmes
        fenAlarmes.ShowDialog()
        ' a voir si l'utilisateur modifie les alarmes
        MesAlarmes = fenAlarmes.MesAlarmes
        ' traitements sur les alarmes avant retour sur vb6 (cela peut avoir été fait dans la fenêtre avec l'objet MesAlarmes de fenAlarmes (donc dans fenAlarmes.MesAlarmes))
        ' A voir retour vers vb6
      End Sub
    End Class
    L'interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ''' <summary>L'interface représente un Wrapper de la classe Alarme pour les programmes exe vb6.</summary>
    ''' <remarks>Sera exportée dans la bibliothéque de type créé dans l'assembly.</remarks>
    Public Interface IAlarmes
      Sub GestAlarme()
      Sub AjoutAlarme(ByVal UnId As String, ByVal LaPriorite As Integer) _
      End Interface
    L'ensemble est relativement simple.


    La fenêtre de visu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class frmAlarmes
     
      Private mMesAlarmes As DesAlarmes
      Public Property MesAlarmes() As DesAlarmes
        Get
          Return mMesAlarmes
        End Get
        Set(ByVal value As DesAlarmes)
          mMesAlarmes = value
        End Set
      End Property
     
    '...
    C'est GestAlarmes qui passe une instance (objet) des alarmes à la fenêtre avant de l'ouvrir. (A toi de voir si tu as besoin des alarmes ou juste du dico)

    C'est un exemple par rapport à ce que je connais, mais cela te donne une idée sur la démarche.
    Cela doit être pensé au début, sinon on a des surprises. Donc réfléchi bien à l'ensemble.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  9. #29
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    sa l'air vraiment structuré a côté de mon programme

    Je regarde sa se matin !!

  10. #30
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Si je déclare mon DicoAlarm en public dans la class DesAlarm, lorsque je fais appel à la procédure AjoutAlarme qui me permet d'ajouter une alarme avec les propriétés désiré dans le dico directement sur le programme en VB6. Mais est-ce que mon dico sera visible sur mes Forms ou seulement dans le fichier ou il se trouve ? parce que pour l'instant j'ai laisser les procédure que j'avais dans mes Forms car elle utilise des objets propre aux Forms tel que les datagridView.

  11. #31
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Je viens de passer mes datagridview en public, normalement, je peux les modifier et réaliser des lectures d'un autre module je pense.

  12. #32
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    Si je déclare mon DicoAlarm en public dans la class DesAlarm, lorsque je fais appel à la procédure AjoutAlarme qui me permet d'ajouter une alarme avec les propriétés désiré dans le dico directement sur le programme en VB6. Mais est-ce que mon dico sera visible sur mes Forms ou seulement dans le fichier ou il se trouve ? parce que pour l'instant j'ai laisser les procédure que j'avais dans mes Forms car elle utilise des objets propre aux Forms tel que les datagridView.
    Dans mon exemple la fenêtre à une propriété de type classe MesAlarmes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Class frmAlarmes
     
      Private mMesAlarmes As DesAlarmes
      Public Property MesAlarmes() As DesAlarmes
        Get
          Return mMesAlarmes
        End Get
        Set(ByVal value As DesAlarmes)
          mMesAlarmes = value
        End Set
      End Property
     
      Private Sub frmAlarmes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MessageBox.Show(mMesAlarmes.DicoAlarmes("a1").Priority) ' affiche 1 valeur passé par l'exe vb6 avec ajout alarme
    GestAlarme passe à ta fenêtre l'objet MesAlarmes alimenté par AjoutAlarme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Public Sub GestAlarme() _
      Implements IAlarmes.GestAlarme
        fenAlarmes.MesAlarmes = MesAlarmes
        fenAlarmes.ShowDialog()

    Avec la propriété MesAlames de ta fenêtre tu peux manipuler toutes les alarmes qui ont été transmises par vb6, et alimenter yon DataGridView.


    Pour info dans vb6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private mesAlarme As Alarmes.InterfaceAlarme ' la classe vb.net
    Private mesAlInt As Alarmes.IAlarmes ' l'interface pour vb6
     
    Private Sub Form_Load()
     Set mesAlarme = New Alarmes.InterfaceAlarme ' instancie la classe alarme (nous avons un objet alarme)
     Set mesAlInt = mesAlarme ' récupère l'interface à partir de l'objet alarme (permet d'avoir l'Intellisense ce qui est très pratique)
    End Sub
     
    ' initialisation des données et gestion des alarmes (propriétés nom et param)
    Private Sub Command1_Click()
      Call mesAlInt.AjoutAlarme("a1", 1)
      Call mesAlInt.GestAlarme  ' appele la sub de gestion des alarmes. (avec fenêtrage)
    End Sub
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  13. #33
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    Je viens de passer mes datagridview en public, normalement, je peux les modifier et réaliser des lectures d'un autre module je pense.
    Laisse les datagridview interne à la fenêtre, il ne servent que d'interface visuelle avec l'utilisateur. Ta propriété MesAlarmes de ta fenêtre doit te permettre d'agir avec les DataGridView et les procédures de ta fenêtre.

    Essaye de voir la philosophie objet
    Ou la classe DesAlarmes contient les données des alarmes et les méthodes qui les manipules.
    Et ta fenêtre qui se sert de l'instance de cette classe (l'objet cré dans le programme) pour présenter les données à l'utilisateur avec tes procédures de mise en forme et de présentation des données.

    Si tu avais des procédures qui transforment les données dans ta fenêtre place les dans ta classe DesAlarmes. comme cela tu les auras de partout ou tu utilises MesAlarmes (cela évite de réécrire le code à plusieurs endroit)

    Par exemple :
    une procedure ChangeNiveauDePriorite(NouveauNiveau) doit se trouver dans UneAlarmes.
    une fonction NombreDePrioritéDeNiveau(x) doit se trouver dans DesAlarmes. elle renvoie le résultat qui lui sera affiché par la fenêtre.
    Une procedure MetUneCouleurParNiveau (pour datagridview) doit être dans ta fenêtre.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  14. #34
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Exemple avec le changement de priorité
    Dans UneAlarme
    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
    Public Class UneAlarme
      Const PrioriteMin As Integer = 0 ' pour exemple (doivent être en fichier de config ou BDD)
      Const PrioriteMax As Integer = 10
     
      Private mPriority As Integer
      ' en lecture seule, la fonction ChangeNiveauPriorite vérifie la validité de la nouvelle priorité avant de la placer dans la propriété Priority
      Public ReadOnly Property Priority() As Integer
        Get
          Return mPriority
        End Get
      End Property
     
      'vérifie la validité de la nouvelle priorité 
      Public Sub ChangeNiveauPriorite(ByVal Niveau As Integer)
        If (PrioriteMin <= Niveau <= PrioriteMax) Then mPriority = Niveau
      End Sub
    Pas de changement dans DesAlarmes

    Dans InterfaceAlarmes
    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
      Public Sub AjoutAlarme(ByVal UnId As String, ByVal LaPriorite As Integer) Implements IAlarmes.AjoutAlarme
        Dim NouvelleAlarme As UneAlarme = New UneAlarme
        NouvelleAlarme.IdAlarm = UnId
        NouvelleAlarme.ChangeNiveauPriorite(LaPriorite)
        MesAlarmes.DicoAlarmes.Add(NouvelleAlarme.IdAlarm, NouvelleAlarme)
      End Sub
     
      Public Sub GestAlarme() Implements IAlarmes.GestAlarme
        fenAlarmes.MesAlarmes = MesAlarmes ' donne les alarmes à la fenêtre
        fenAlarmes.ShowDialog()
        MesAlarmes = fenAlarmes.MesAlarmes ' récupère les alamres traitées par la fenêtre
      End Sub
     
      Public Sub LitAlarmes(ByVal UnId As String, ByRef LaPriorite As Integer) Implements IAlarmes.LitAlarmes
        LaPriorite = MesAlarmes.DicoAlarmes(UnId).Priority
      End Sub
    L'interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Interface IAlarmes
      Sub GestAlarme()
      Sub AjoutAlarme(ByVal UnId As String, ByVal LaPriorite As Integer)
      Sub LitAlarmes(ByVal UnId As String, ByRef LaPriorite As Integer)
    End Interface
    Dans la fenêtre
    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
    Public Class frmAlarmes
     
      Private mMesAlarmes As DesAlarmes
      Public Property MesAlarmes() As DesAlarmes
        Get
          Return mMesAlarmes
        End Get
        Set(ByVal value As DesAlarmes)
          mMesAlarmes = value
        End Set
      End Property
     
      'pour test
      Private Sub ActionChangeNiveauA2()
        mMesAlarmes.DicoAlarmes("a1").ChangeNiveauPriorite(2)
      End Sub
    Dans vb6
    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 mesAlarme As Alarmes.InterfaceAlarme ' la classe vb.net
    Private mesAlInt As Alarmes.IAlarmes ' l'interface pour vb6
     
    Private Sub Form_Load()
     Set mesAlarme = New Alarmes.InterfaceAlarme ' instancie la classe alarme (nous avons un objet alarme)
     Set mesAlInt = mesAlarme ' récupère l'interface à partir de l'objet alarme (permet d'avoir l'Intellisense ce qui est très pratique)
    End Sub
     
    ' initialisation des données et gestion des alarmes (propriétés nom et param)
    Private Sub Command1_Click()
    Dim pri As Long
      Call mesAlInt.AjoutAlarme("a1", 1)
      Call mesAlInt.GestAlarme  ' appele la sub de gestion des alarmes. (avec fenêtrage)
      Call mesAlInt.LitAlarmes("a1", pri)
      MsgBox ("vb6 " & pri) ' affiche 2
    End Sub
    Tu as un principe de fonctionnement complet.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  15. #35
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Depuis 2 jours c'est un sac de noeux dans ma tête, un vrai bordel et la je commence vraiment a sortir et en plus c'est tous structuré. J'arrive déjà a lancer mon gestionnaire via VB6, j'ai mi quasi toute mes procédure qui se trouver dans mon Form2 directement dans une classe MethodeVariable qui se trouve dans mon fichier principal. J'ai rajouter mes variables qui était avant dans mon module dans ma classe Alarme et j'ai fait hérité la classe MethodeVariable de la classe Alarme pour récupéré mes variables sans souci car j'ai besoin des variables dans ma classe Alarme et dans l'autre pour certaine procédure.

    Je commence un peu à voir la philosophie objet et j’espère que d'ici quel que semaine, je serai un .... dans la programmation orienté Objet.

    Pour l'instant j'ai encore quelque petit souci au niveau du dico qui est vide je sais pas pourquoi mais je planche dessus.

    J’espère qu'en fin de journée j'aurai un programme qui tourne a fond pour le mettre sur le forum.


    Un grand merci à rv26t !! J'ai appris beaucoup de truc grâce à toi !!

  16. #36
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Je pense savoir d’où viens mon problème, avec ma Procédure AjoutAlarme j’enregistre dans ma bibliothèque une clé pour un objet alarm mais l’objet alarme est déclarer dans la procédure donc à la fin de la procédure il est détruit à cause du destructeur et donc quand j'utilise mon dico, il est vide.

    D’où mes deux poste d'hier pour essayer de déclarer des Objets Alarmes de maniéré dynamique et en globale.

  17. #37
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Je vais essayer de voir si je peux pas les déclarer manuellement dans mon programme en VB6, c'est pas très dramatique de toute façon, j'aurai aimé que mon programme soit plus automatique et qu'il permet à l'utilisateur de configurer le moins de truc possible dans le programme VB6 mais je vais devoir m'en passé.

  18. #38
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Par contre si je déclare des Objets Alarmes manuellement dans le programme en VB6, je crois qu'elle seront pas importé dans mon programme en Visual Studio ce qui ne sert a rien.

    Il faut absolument que je réaliser une procédure qui déclarer des Objets Alarmes en public dans ma classe Alarme à chaque fois que je le demande avec un nom différent à chaque fois.

  19. #39
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    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
        Public Sub AjoutAlarme(ByVal idAlarm As Integer, ByVal unit As String, ByVal moduleparam As String, ByVal description As String, ByVal niveaualarm As String, ByVal message As String, ByVal priority As String, ByVal seuil As String) _
        Implements IAlarmes.AjoutAlarme
            Dim x As String = "Alarm" & idAlarm
            Public x As Alarme = New Alarme
            x.IdAlarm = idAlarm
            x.Unit = unit
            x.ModuleParam = moduleparam
            x.Description = description
            x.NiveauAlarm = niveaualarm
            x.Message = message
            x.Priority = priority
            x.Seuil = seuil
            DicoAlarm.Add(x.IdAlarm, moduleparam)
            DicoAlarm2.Add(x.ModuleParam, moduleparam)
            i0 = i0 + 1
        End Sub
    Voila j'ai pensé à un truc dans ce genre sachant que "x" est une concaténation entre un String "Alarm" et le numéros de l'alarme qu'on souhaite ajouter qui est unique. Alors le probleme est qu'il aime pas la déclaration public dans une procédure ^^

  20. #40
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    En plus c'est dans "x" qu'il va déclarer l'alarme et non pas "Alarm" & 1 par exemple !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [PHP-JS] créer des espaces entre les mots php
    Par dgac2000 dans le forum Langage
    Réponses: 9
    Dernier message: 10/06/2019, 02h33
  2. Réponses: 6
    Dernier message: 04/06/2008, 23h50
  3. Créer des reperes sur les lignes de code
    Par alafu dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2007, 14h44
  4. Créer des DLL manipulant les tables d'une BDD
    Par dj_techno dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/02/2007, 08h20
  5. [Eclipse] [VE] Créer des menus avec les classes SWT de VE
    Par jbcorens dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 30/08/2005, 12h25

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