Module de Classe et Type defini par l'utilisateur

M@el Messages postés 1 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 5 septembre 2005 - 5 sept. 2005 à 10:02
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 12 juil. 2007 à 13:51
Hello,

Je dois à l'intérieur d'une classe manipuler un tableau d'un TYPE que j'ai moi même défini.
Cette classe doit pouvoir renvoyer une ligne du tableau dans le style :

Public Property Get LigneTableau(iLigne as Integer) As MON_TYPE

LigneTableau= TableauPrive(iLigne) '// TableauPrive est un tableau privé de MON_TYPE ds la classe

End Property

Bien sur le type MON_TYPE doit aussi être accessible en dehors de la classe.

Question : où dois je déclarer ce fichu TYPE pour que VB6 ne m'envoie pas chier ?
Car en public dans la classe il ne veut pas, en public dans un module idem...

Il coince sur : "Public Property Get LigneTableau(iLigne as Integer) As MON_TYPE"
Il met : "Erreur de compilation : seul les types publics definis par l'utilisateur et qui sont définis dans des modules d'objet public peuvent être utilisé comme type renvoyé ou paramètres pour des procédure public de module de classe".

je ne vois pas ce qu'ils entendent par "modules d'objet public"

Merci de votre aide
M@el

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
5 sept. 2005 à 11:23
Ben module d'objet public, ca veut dire un module de classe qui est
public (propriété Instancing de ta classe doit être à 5 ou 6).



Sinon, il faut déclarer ton type en public dans le module de classe.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
alexis_bonal Messages postés 2 Date d'inscription dimanche 21 mai 2006 Statut Membre Dernière intervention 3 novembre 2006
3 nov. 2006 à 13:58
Hello,

Je ressors ce vieux message des archives car je rencontre le même problème: j'ai défini un type MONTYPE dans un module (*.bas) et je cherche à passer toto as MONTYPE en argument d'une Sub d'un module de classe (*.cls). ==> Même msg d'erreur.
Par contre, je n'ai pas du tout compris la solution donnée par DarK Sidious...

Pouvez vous m'aider ?

Merci,

> AleXis
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
3 nov. 2006 à 14:37
Bah il s'agit de déclarer le type non pas dans un module, mais en public dans une classe instanciable publiquement => dans la feuille de propriété de vb (celle qui permet d'accèder aux propriétés d'un contrôle par exemple), lorsqu'on ouvre un module de classe, on peut définir la visibilité de la classe => il faut la mettre en public pour que ca puisse marcher.
0
alexis_bonal Messages postés 2 Date d'inscription dimanche 21 mai 2006 Statut Membre Dernière intervention 3 novembre 2006
3 nov. 2006 à 14:47
Dsl, mais je ne vois pas .
Quand je vais sur mon module de classe, je n'ai accès qu'à 3 propriétés : name, databindingbehavior, datasourcebehavior.
Si je créée une propertypage "ADD>>Propertypage", j'ai une nouvelle zone graphique qui apparaît mais je suis assez démuni...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
3 nov. 2006 à 15:53
Il faut que ton projet soit de type exe activeX pour avoir accès à la visibilité d'une classe.
0
cs_accapucif Messages postés 1 Date d'inscription samedi 7 octobre 2006 Statut Membre Dernière intervention 12 juillet 2007
12 juil. 2007 à 11:46
Moi aussi j'ai rencontré les même soucis lorssue je voulais faire passer dans une FUNCTION ou un SUB un argument qui était une variable de type personalisé.
Visual Basic m'envoyait toujours un message d'erreur:
"only public user types...". En fait il suffit que la sub ou la fonction ou encore la propriété soit déclaré non pas public, mais friend... et en principe ça fonctionne.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
12 juil. 2007 à 13:51
accapucif : tu sais à quoi sers les fonctions friend ? Tout dépend de quel type de projet tu fais, mais la fonction friend, si tu fais une dll ou un exe activeX, ne sera visible qu'à l'intérieur de ton projet, c'est donc bien différent qu'une fonction publique !

Mais qu'est-ce qui vous empêche de faire une classe instanciable publiquement ?
0
Rejoignez-nous