Un petit schéma valant mieux qu'un grand discours, ci joint un bout de code très simple que je n'arrive pas à mettre en oeuvre :
----------------------------------------------------------------------------------
Création d'un objet active X qui contient qu'un seul lablel et un "UDT" Public. Voici son code :
Option Explicit
Public Type mUDT
name As String
num As Long
End Type
Public Sub loadData(data() As mUDT)
Dim str As String
Dim i As Integer
For i = 0 To UBound(data)
str = str & vbCrLf & Chr(9)
str = str & "data(" & i & ") name = " & data(i).name & _
" num = " & data(i).num
Next i
Label1.Caption = str
End Sub
-----------------------------------------------------------------------------------
Dans un projet EXE standard qui intégre comme composant l'activeX créé précedement, j'y mets un module et une form (form1). Sur la form je pose le controle activeX seul sans code (userControl1). Dans le module j'intégre le code ci dessous :
Option Explicit
Dim mUdtTest() As mUDT
Sub main()
Dim i As Integer
ReDim mUdtTest(5)
For i = 0 To 5
mUdtTest(i).Name = "objet_" & i
mUdtTest(i).num = i
Next i
Form1.UserControl11.loadData mUdtTest
Form1.Show
End Sub
----------------------------------------------------------------------------------
Tout ceci fonctionne très bien dans l'atelier de developpement, mais pas
après installation en bon et du forme (avec le package généré par l'assistant d'empaquetage de VB6) sur une autre machine.
Lors du lancement de l'éxécutable, rien ne se passe pas de message d'erreur, rien quoi sauf un malheureux beep.
Je ne comprends pas mon erreur, ou est elle ?
Plus généralement quelle est la mèthode pour passer comme argument à une méthode ActiveX un tableau d'UDT ?
Par avance MERCI.