J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé
une méthode public suivante : Public sub laodData(data as savLigne())
savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est
constituée d'un tableau d'une autre "UDT" déclaré également en public au sein
de l'active X. Leur déclaration est de la forme suivante :
Public type seg
nom as string
debut as Date
....
End type
Public type savLigne
nom as string
.....
data() as seg
End type
Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX.
Dans un module de ce projet exe, je lit un fichier texte et met en forme les
infourmations sous la forme savLigne avant d'appeler la fonction "loadData
(...)" de l'active X.
Sur la machine de développement l'éxécution de l'executable se passe bien,
et répond aux attentes. Par contre après avoir installé le package généré
avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep.
Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT"
de l'activeX qui pose problème.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
HWO
Le fait de mettre la procédure loadData en Friend à la place de Public, me génére l'erreur de compilation suivante dans mon projet de debug : "Méthode ou membre de données introuvables"
Merci d'avance.
"Pascal B." a écrit :
Bonjour HWO
Voici la solution:
Remplacer Public par Friend et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement Pascal B.
"HWO" wrote in message news: | Bonjour, | | J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé | une méthode public suivante : Public sub laodData(data as savLigne()) | | savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est | constituée d'un tableau d'une autre "UDT" déclaré également en public au sein | de l'active X. Leur déclaration est de la forme suivante : | Public type seg | nom as string | debut as Date | .... | End type | | Public type savLigne | nom as string | ..... | data() as seg | End type | | Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX. | Dans un module de ce projet exe, je lit un fichier texte et met en forme les | infourmations sous la forme savLigne avant d'appeler la fonction "loadData | (...)" de l'active X. | | Sur la machine de développement l'éxécution de l'executable se passe bien, | et répond aux attentes. Par contre après avoir installé le package généré | avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep. | Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT" | de l'activeX qui pose problème. | | Comment résoudre ou contourner ce phénomènes ? | | Par avance merci de votre collaboration active. | | RV
Le fait de mettre la procédure loadData en Friend à la place de Public, me
génére l'erreur de compilation suivante dans mon projet de debug :
"Méthode ou membre de données introuvables"
Merci d'avance.
"Pascal B." a écrit :
Bonjour HWO
Voici la solution:
Remplacer Public par Friend
et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement
Pascal B.
"HWO" <HWO@discussions.microsoft.com> wrote in message news:99049451-FF32-4E93-A18C-A2E1A3BE0301@microsoft.com...
| Bonjour,
|
| J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé
| une méthode public suivante : Public sub laodData(data as savLigne())
|
| savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est
| constituée d'un tableau d'une autre "UDT" déclaré également en public au sein
| de l'active X. Leur déclaration est de la forme suivante :
| Public type seg
| nom as string
| debut as Date
| ....
| End type
|
| Public type savLigne
| nom as string
| .....
| data() as seg
| End type
|
| Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX.
| Dans un module de ce projet exe, je lit un fichier texte et met en forme les
| infourmations sous la forme savLigne avant d'appeler la fonction "loadData
| (...)" de l'active X.
|
| Sur la machine de développement l'éxécution de l'executable se passe bien,
| et répond aux attentes. Par contre après avoir installé le package généré
| avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep.
| Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT"
| de l'activeX qui pose problème.
|
| Comment résoudre ou contourner ce phénomènes ?
|
| Par avance merci de votre collaboration active.
|
| RV
Le fait de mettre la procédure loadData en Friend à la place de Public, me génére l'erreur de compilation suivante dans mon projet de debug : "Méthode ou membre de données introuvables"
Merci d'avance.
"Pascal B." a écrit :
Bonjour HWO
Voici la solution:
Remplacer Public par Friend et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement Pascal B.
"HWO" wrote in message news: | Bonjour, | | J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé | une méthode public suivante : Public sub laodData(data as savLigne()) | | savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est | constituée d'un tableau d'une autre "UDT" déclaré également en public au sein | de l'active X. Leur déclaration est de la forme suivante : | Public type seg | nom as string | debut as Date | .... | End type | | Public type savLigne | nom as string | ..... | data() as seg | End type | | Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX. | Dans un module de ce projet exe, je lit un fichier texte et met en forme les | infourmations sous la forme savLigne avant d'appeler la fonction "loadData | (...)" de l'active X. | | Sur la machine de développement l'éxécution de l'executable se passe bien, | et répond aux attentes. Par contre après avoir installé le package généré | avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep. | Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT" | de l'activeX qui pose problème. | | Comment résoudre ou contourner ce phénomènes ? | | Par avance merci de votre collaboration active. | | RV
Pascal B.
Bonjour HWO
Voici la solution:
Remplacer Public par Friend et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement Pascal B.
"HWO" wrote in message news: | Bonjour, | | J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé | une méthode public suivante : Public sub laodData(data as savLigne()) | | savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est | constituée d'un tableau d'une autre "UDT" déclaré également en public au sein | de l'active X. Leur déclaration est de la forme suivante : | Public type seg | nom as string | debut as Date | .... | End type | | Public type savLigne | nom as string | ..... | data() as seg | End type | | Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX. | Dans un module de ce projet exe, je lit un fichier texte et met en forme les | infourmations sous la forme savLigne avant d'appeler la fonction "loadData | (...)" de l'active X. | | Sur la machine de développement l'éxécution de l'executable se passe bien, | et répond aux attentes. Par contre après avoir installé le package généré | avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep. | Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT" | de l'activeX qui pose problème. | | Comment résoudre ou contourner ce phénomènes ? | | Par avance merci de votre collaboration active. | | RV
Bonjour HWO
Voici la solution:
Remplacer Public par Friend
et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement
Pascal B.
"HWO" <HWO@discussions.microsoft.com> wrote in message news:99049451-FF32-4E93-A18C-A2E1A3BE0301@microsoft.com...
| Bonjour,
|
| J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé
| une méthode public suivante : Public sub laodData(data as savLigne())
|
| savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est
| constituée d'un tableau d'une autre "UDT" déclaré également en public au sein
| de l'active X. Leur déclaration est de la forme suivante :
| Public type seg
| nom as string
| debut as Date
| ....
| End type
|
| Public type savLigne
| nom as string
| .....
| data() as seg
| End type
|
| Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX.
| Dans un module de ce projet exe, je lit un fichier texte et met en forme les
| infourmations sous la forme savLigne avant d'appeler la fonction "loadData
| (...)" de l'active X.
|
| Sur la machine de développement l'éxécution de l'executable se passe bien,
| et répond aux attentes. Par contre après avoir installé le package généré
| avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep.
| Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT"
| de l'activeX qui pose problème.
|
| Comment résoudre ou contourner ce phénomènes ?
|
| Par avance merci de votre collaboration active.
|
| RV
Remplacer Public par Friend et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement Pascal B.
"HWO" wrote in message news: | Bonjour, | | J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé | une méthode public suivante : Public sub laodData(data as savLigne()) | | savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est | constituée d'un tableau d'une autre "UDT" déclaré également en public au sein | de l'active X. Leur déclaration est de la forme suivante : | Public type seg | nom as string | debut as Date | .... | End type | | Public type savLigne | nom as string | ..... | data() as seg | End type | | Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX. | Dans un module de ce projet exe, je lit un fichier texte et met en forme les | infourmations sous la forme savLigne avant d'appeler la fonction "loadData | (...)" de l'active X. | | Sur la machine de développement l'éxécution de l'executable se passe bien, | et répond aux attentes. Par contre après avoir installé le package généré | avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep. | Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT" | de l'activeX qui pose problème. | | Comment résoudre ou contourner ce phénomènes ? | | Par avance merci de votre collaboration active. | | RV
christophe-pasde
Bonjour,
Il y a quelque chose que je ne comprend pas. Une methode publique de l'activeX attend en paramètre un type defini par l'utilisateur qui est déclaré publique au niveau du même ActiveX ??
Au niveau de l'objet (activeX) ce qui est extérieur c'est le fichier texte, tes type de données savligne ou seg sont propre à l'objet, donc privées, en toute logique OO ce devrait être des objets aussi, ce qui permet même une utilisation de ces type en dehors de l'ActiveX.
Je pense comme Pascal que le problème vient de la déclaration des type. Peut tu nous préciser quel est la méthode ou propriété de quel objet qui génére l'erreur à la compile?
Christophe
HWO a écrit :
Le fait de mettre la procédure loadData en Friend à la place de Public, me génére l'erreur de compilation suivante dans mon projet de debug : "Méthode ou membre de données introuvables"
Merci d'avance.
"Pascal B." a écrit :
Bonjour HWO
Voici la solution:
Remplacer Public par Friend et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement Pascal B.
"HWO" wrote in message news: | Bonjour, | | J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé | une méthode public suivante : Public sub laodData(data as savLigne()) | | savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est | constituée d'un tableau d'une autre "UDT" déclaré également en public au sein | de l'active X. Leur déclaration est de la forme suivante : | Public type seg | nom as string | debut as Date | .... | End type | | Public type savLigne | nom as string | ..... | data() as seg | End type | | Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX. | Dans un module de ce projet exe, je lit un fichier texte et met en forme les | infourmations sous la forme savLigne avant d'appeler la fonction "loadData | (...)" de l'active X. | | Sur la machine de développement l'éxécution de l'executable se passe bien, | et répond aux attentes. Par contre après avoir installé le package généré | avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep. | Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT" | de l'activeX qui pose problème. | | Comment résoudre ou contourner ce phénomènes ? | | Par avance merci de votre collaboration active. | | RV
Bonjour,
Il y a quelque chose que je ne comprend pas.
Une methode publique de l'activeX attend en paramètre un type defini par
l'utilisateur qui est déclaré publique au niveau du même ActiveX ??
Au niveau de l'objet (activeX) ce qui est extérieur c'est le fichier
texte, tes type de données savligne ou seg sont propre à l'objet, donc
privées, en toute logique OO ce devrait être des objets aussi, ce qui
permet même une utilisation de ces type en dehors de l'ActiveX.
Je pense comme Pascal que le problème vient de la déclaration des type.
Peut tu nous préciser quel est la méthode ou propriété de quel objet qui
génére l'erreur à la compile?
Christophe
HWO a écrit :
Le fait de mettre la procédure loadData en Friend à la place de Public, me
génére l'erreur de compilation suivante dans mon projet de debug :
"Méthode ou membre de données introuvables"
Merci d'avance.
"Pascal B." a écrit :
Bonjour HWO
Voici la solution:
Remplacer Public par Friend
et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement
Pascal B.
"HWO" <HWO@discussions.microsoft.com> wrote in message news:99049451-FF32-4E93-A18C-A2E1A3BE0301@microsoft.com...
| Bonjour,
|
| J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé
| une méthode public suivante : Public sub laodData(data as savLigne())
|
| savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est
| constituée d'un tableau d'une autre "UDT" déclaré également en public au sein
| de l'active X. Leur déclaration est de la forme suivante :
| Public type seg
| nom as string
| debut as Date
| ....
| End type
|
| Public type savLigne
| nom as string
| .....
| data() as seg
| End type
|
| Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX.
| Dans un module de ce projet exe, je lit un fichier texte et met en forme les
| infourmations sous la forme savLigne avant d'appeler la fonction "loadData
| (...)" de l'active X.
|
| Sur la machine de développement l'éxécution de l'executable se passe bien,
| et répond aux attentes. Par contre après avoir installé le package généré
| avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep.
| Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT"
| de l'activeX qui pose problème.
|
| Comment résoudre ou contourner ce phénomènes ?
|
| Par avance merci de votre collaboration active.
|
| RV
Il y a quelque chose que je ne comprend pas. Une methode publique de l'activeX attend en paramètre un type defini par l'utilisateur qui est déclaré publique au niveau du même ActiveX ??
Au niveau de l'objet (activeX) ce qui est extérieur c'est le fichier texte, tes type de données savligne ou seg sont propre à l'objet, donc privées, en toute logique OO ce devrait être des objets aussi, ce qui permet même une utilisation de ces type en dehors de l'ActiveX.
Je pense comme Pascal que le problème vient de la déclaration des type. Peut tu nous préciser quel est la méthode ou propriété de quel objet qui génére l'erreur à la compile?
Christophe
HWO a écrit :
Le fait de mettre la procédure loadData en Friend à la place de Public, me génére l'erreur de compilation suivante dans mon projet de debug : "Méthode ou membre de données introuvables"
Merci d'avance.
"Pascal B." a écrit :
Bonjour HWO
Voici la solution:
Remplacer Public par Friend et placer les parenthèses sur Data
==> Friend Sub LoadData(Data() as savLign)
Cordialement Pascal B.
"HWO" wrote in message news: | Bonjour, | | J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé | une méthode public suivante : Public sub laodData(data as savLigne()) | | savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est | constituée d'un tableau d'une autre "UDT" déclaré également en public au sein | de l'active X. Leur déclaration est de la forme suivante : | Public type seg | nom as string | debut as Date | .... | End type | | Public type savLigne | nom as string | ..... | data() as seg | End type | | Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX. | Dans un module de ce projet exe, je lit un fichier texte et met en forme les | infourmations sous la forme savLigne avant d'appeler la fonction "loadData | (...)" de l'active X. | | Sur la machine de développement l'éxécution de l'executable se passe bien, | et répond aux attentes. Par contre après avoir installé le package généré | avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep. | Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT" | de l'activeX qui pose problème. | | Comment résoudre ou contourner ce phénomènes ? | | Par avance merci de votre collaboration active. | | RV
HWO
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. 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 met 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 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 ?
Par avance MERCI.
"christophe-pasde<> @wanadoo.fr>" <" a écrit :
Bonjour,
Il y a quelque chose que je ne comprend pas. Une methode publique de l'activeX attend en paramètre un type defini par l'utilisateur qui est déclaré publique au niveau du même ActiveX ??
Au niveau de l'objet (activeX) ce qui est extérieur c'est le fichier texte, tes type de données savligne ou seg sont propre à l'objet, donc privées, en toute logique OO ce devrait être des objets aussi, ce qui permet même une utilisation de ces type en dehors de l'ActiveX.
Je pense comme Pascal que le problème vient de la déclaration des type. Peut tu nous préciser quel est la méthode ou propriété de quel objet qui génére l'erreur à la compile?
Christophe
HWO a écrit :
> Le fait de mettre la procédure loadData en Friend à la place de Public, me > génére l'erreur de compilation suivante dans mon projet de debug : > "Méthode ou membre de données introuvables" > > Merci d'avance. > > > "Pascal B." a écrit : > > >>Bonjour HWO >> >>Voici la solution: >> >>Remplacer Public par Friend >>et placer les parenthèses sur Data >> >>==> Friend Sub LoadData(Data() as savLign) >> >>Cordialement >>Pascal B. >> >> >> >>"HWO" wrote in message news: >>| Bonjour, >>| >>| J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé >>| une méthode public suivante : Public sub laodData(data as savLigne()) >>| >>| savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est >>| constituée d'un tableau d'une autre "UDT" déclaré également en public au sein >>| de l'active X. Leur déclaration est de la forme suivante : >>| Public type seg >>| nom as string >>| debut as Date >>| .... >>| End type >>| >>| Public type savLigne >>| nom as string >>| ..... >>| data() as seg >>| End type >>| >>| Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX. >>| Dans un module de ce projet exe, je lit un fichier texte et met en forme les >>| infourmations sous la forme savLigne avant d'appeler la fonction "loadData >>| (...)" de l'active X. >>| >>| Sur la machine de développement l'éxécution de l'executable se passe bien, >>| et répond aux attentes. Par contre après avoir installé le package généré >>| avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep. >>| Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT" >>| de l'activeX qui pose problème. >>| >>| Comment résoudre ou contourner ce phénomènes ? >>| >>| Par avance merci de votre collaboration active. >>| >>| RV >> >> >>
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. 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 met 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 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 ?
Par avance MERCI.
"christophe-pasde<> @wanadoo.fr>" <" a écrit :
Bonjour,
Il y a quelque chose que je ne comprend pas.
Une methode publique de l'activeX attend en paramètre un type defini par
l'utilisateur qui est déclaré publique au niveau du même ActiveX ??
Au niveau de l'objet (activeX) ce qui est extérieur c'est le fichier
texte, tes type de données savligne ou seg sont propre à l'objet, donc
privées, en toute logique OO ce devrait être des objets aussi, ce qui
permet même une utilisation de ces type en dehors de l'ActiveX.
Je pense comme Pascal que le problème vient de la déclaration des type.
Peut tu nous préciser quel est la méthode ou propriété de quel objet qui
génére l'erreur à la compile?
Christophe
HWO a écrit :
> Le fait de mettre la procédure loadData en Friend à la place de Public, me
> génére l'erreur de compilation suivante dans mon projet de debug :
> "Méthode ou membre de données introuvables"
>
> Merci d'avance.
>
>
> "Pascal B." a écrit :
>
>
>>Bonjour HWO
>>
>>Voici la solution:
>>
>>Remplacer Public par Friend
>>et placer les parenthèses sur Data
>>
>>==> Friend Sub LoadData(Data() as savLign)
>>
>>Cordialement
>>Pascal B.
>>
>>
>>
>>"HWO" <HWO@discussions.microsoft.com> wrote in message news:99049451-FF32-4E93-A18C-A2E1A3BE0301@microsoft.com...
>>| Bonjour,
>>|
>>| J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé
>>| une méthode public suivante : Public sub laodData(data as savLigne())
>>|
>>| savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est
>>| constituée d'un tableau d'une autre "UDT" déclaré également en public au sein
>>| de l'active X. Leur déclaration est de la forme suivante :
>>| Public type seg
>>| nom as string
>>| debut as Date
>>| ....
>>| End type
>>|
>>| Public type savLigne
>>| nom as string
>>| .....
>>| data() as seg
>>| End type
>>|
>>| Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX.
>>| Dans un module de ce projet exe, je lit un fichier texte et met en forme les
>>| infourmations sous la forme savLigne avant d'appeler la fonction "loadData
>>| (...)" de l'active X.
>>|
>>| Sur la machine de développement l'éxécution de l'executable se passe bien,
>>| et répond aux attentes. Par contre après avoir installé le package généré
>>| avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep.
>>| Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT"
>>| de l'activeX qui pose problème.
>>|
>>| Comment résoudre ou contourner ce phénomènes ?
>>|
>>| Par avance merci de votre collaboration active.
>>|
>>| RV
>>
>>
>>
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. 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 met 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 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 ?
Par avance MERCI.
"christophe-pasde<> @wanadoo.fr>" <" a écrit :
Bonjour,
Il y a quelque chose que je ne comprend pas. Une methode publique de l'activeX attend en paramètre un type defini par l'utilisateur qui est déclaré publique au niveau du même ActiveX ??
Au niveau de l'objet (activeX) ce qui est extérieur c'est le fichier texte, tes type de données savligne ou seg sont propre à l'objet, donc privées, en toute logique OO ce devrait être des objets aussi, ce qui permet même une utilisation de ces type en dehors de l'ActiveX.
Je pense comme Pascal que le problème vient de la déclaration des type. Peut tu nous préciser quel est la méthode ou propriété de quel objet qui génére l'erreur à la compile?
Christophe
HWO a écrit :
> Le fait de mettre la procédure loadData en Friend à la place de Public, me > génére l'erreur de compilation suivante dans mon projet de debug : > "Méthode ou membre de données introuvables" > > Merci d'avance. > > > "Pascal B." a écrit : > > >>Bonjour HWO >> >>Voici la solution: >> >>Remplacer Public par Friend >>et placer les parenthèses sur Data >> >>==> Friend Sub LoadData(Data() as savLign) >> >>Cordialement >>Pascal B. >> >> >> >>"HWO" wrote in message news: >>| Bonjour, >>| >>| J'ai créé un contrôle activeX de mise en forme de données. J'ai donc créé >>| une méthode public suivante : Public sub laodData(data as savLigne()) >>| >>| savLigne est une "UDT" déclarée en publique dans ce même active X. Elle est >>| constituée d'un tableau d'une autre "UDT" déclaré également en public au sein >>| de l'active X. Leur déclaration est de la forme suivante : >>| Public type seg >>| nom as string >>| debut as Date >>| .... >>| End type >>| >>| Public type savLigne >>| nom as string >>| ..... >>| data() as seg >>| End type >>| >>| Je crée maintenant un autre projet ("exe standard") qui intégre cet ACTIVEX. >>| Dans un module de ce projet exe, je lit un fichier texte et met en forme les >>| infourmations sous la forme savLigne avant d'appeler la fonction "loadData >>| (...)" de l'active X. >>| >>| Sur la machine de développement l'éxécution de l'executable se passe bien, >>| et répond aux attentes. Par contre après avoir installé le package généré >>| avec VB sur une autre machine, cet exécutable ne fait rien, juste un beep. >>| Après plusieurs essai je me suis aperçu que c'étatit l'utilisation des "UDT" >>| de l'activeX qui pose problème. >>| >>| Comment résoudre ou contourner ce phénomènes ? >>| >>| Par avance merci de votre collaboration active. >>| >>| RV >> >> >>