J'ai réussi à réaliser en plus de l'interface que "rv26t" ma présenté dans un autre poste de rajouter une interface IEvenAlarme qui ce trouve dans mon ddl vb.net, qui implémente une classe CEvenAlarme dans VB6 et qui est déclarer et instancié dans le VB6. Cette interface est ensuite lié à la première interface ce qui me permet dans mon programme vb.net d'exécuter des procédures pour réaliser des changements de variable dans les contrôles utilisateurs de mon VB6 directement dans les Events qui se trouve dans mon vb.net.
Avantage, plus de scrutation et un meilleur contrôle du partage d'information.
Je vous met la solution :
Programme VB6, déclaration et instanciation :
Programme VB6 (Classe CEventAlarme qui se trouve dans un module de Classe):Code:
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 Option Explicit ' Importation et déclaration de l'objet de type classe "interfaceAlarme" qui contient toute les procédures via l'interface IAlarmes. Public monAlarme As GestionnaireAlarme.InterfaceAlarme ' la classe vb.net 'Public monAlInt As GestionnaireAlarme.IAlarmes ' l'interface pour vb6 Public aEventAlarme As New CEventAlarme ' la classe VB6 Public monEventAlarme As GestionnaireAlarme.IEventAlarme ' l'interface pour vb6 ' Procedure qui permet l'implémenter l'interface vb.net Public Sub ImplementerInterfaceGestionnaire() Set monAlarme = New GestionnaireAlarme.InterfaceAlarme ' implémente la classe alarme (nous avons un objet alarme) 'Set monAlInt = monAlarme ' récupère l'interface à partir de l'objet alarme (permet d'avoir l'Intellisense ce qui est très pratique) End Sub ' Procedure qui permet l'implémenter l'interface vb.net Public Sub ImplementerEventAlarme() Set aEventAlarme = New CEventAlarme ' implémente la classe alarme (nous avons un objet alarme) Set monEventAlarme = aEventAlarme ' récupère l'interface à partir de l'objet alarme (permet d'avoir l'Intellisense ce qui est très pratique) End Sub Private Sub Command1_Click() Call monAlarme.LancerGestionnaireAlarme ' appele la sub qui permet de lancer le gestionnaire d'alarme. End Sub Private Sub Form_Load() Call ImplementerInterfaceGestionnaire Call ImplementerEventAlarme Call monAlarme.SetEventAlarme(aEventAlarme) End Sub
Code:
1
2
3
4
5 Implements GestionnaireAlarme.IEventAlarme Public Sub IEventAlarme_OnChangeEnable() MsgBox ("toto") End Sub
Programme VB.NET avec mes interfaces :
Programme VB.NET ma classe InterfaceAlarme :Code:
1
2
3
4
5
6
7 Public Interface IAlarmes Sub SetEventAlarme(ByVal pEventAlarme As IEventAlarme) Sub LancerGestionnaireAlarme() Public Interface IEventAlarme Sub OnChangeEnable() End Interface
et pour finir mon bouton qui se trouve dans le Form2 qui fait appel à ma procédure OnChangeEnable() qui se trouve dans VB6 via l'interface IEventAlarme qui est implémenter par un Set, etc....Code:
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 Public Class InterfaceAlarme Implements IAlarmes ' contrat entre classe et interface. Public aEventAlarme As IEventAlarme Public fenAlarmes As Form2 = New Form2 Public MesAlarmes As Alarme = New Alarme ' a voir la portée Public fenAlarmesPoubelle As Form3 = New Form3 Public Sub SetEventAlarme(ByVal pEventAlarme As IEventAlarme) _ Implements IAlarmes.SetEventAlarme aEventAlarme = pEventAlarme fenAlarmes.aInterfaceAlarme = Me End Sub Public Sub LancerGestionnaireAlarme() _ Implements IAlarmes.LancerGestionnaireAlarme fenAlarmes.MesAlarmes = MesAlarmes fenAlarmesPoubelle.MesAlarmes = MesAlarmes fenAlarmes.Show() fenAlarmesPoubelle.Show() fenAlarmesPoubelle.Visible = False fenAlarmes.FenPoubelle = fenAlarmesPoubelle MesAlarmes = fenAlarmes.MesAlarmes End Sub End Class
Au final quand je lance mon simulateur en VB6, j'ouvre un gestionnaire en VB.NET, je clic sur le bouton1 et j'obtiens "toto".Code:
1
2
3
4 Public aInterfaceAlarme As InterfaceAlarme Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click aInterfaceAlarme.aEventAlarme.OnChangeEnable() End Sub
Je sais qu'il y a pas de quoi être fière mais je suis un automaticien, et arrivé à faire un truc comme sa, c'est hors norme pour des personnes comme nous qui font que des maths, maths, maths et maths !!