Pôv Type (pb de type)

cs_ErickG Messages postés 5 Date d'inscription jeudi 11 juillet 2002 Statut Membre Dernière intervention 19 décembre 2002 - 18 déc. 2002 à 11:49
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 19 déc. 2002 à 12:40
Bonjour à tous,
J'ai un programme permettant de générer des empilements de sphères : un module retourne un empilement sous la forme d'un type personnalisé (liste des centres et rayons...).
Je voudrais alors visualiser cet empilement à l'aide d'un contrôle ActiveX personnalisé que je pourrais insérer au
programme principal. Le problème est qu'un contrôle ne
semble pas pouvoir gérer les types extérieurs au contrôle
dans les procédures d'entrée (message d'erreur avec Type
défini par l'utilisateur...), même en déclarant la variable d'entrée en tant qu'Object. Mon type personnalisé semble donc inutilisable avec un contrôle.
Quelqu'un aurait-il une solution ?
Merci pour votre contribution

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 déc. 2002 à 14:56
Est-ce que tu as essayé de déclarer ton type en temps que public dans un module ? (je ne sais pas si ca marche...)

DARK SIDIOUS
0
cs_ErickG Messages postés 5 Date d'inscription jeudi 11 juillet 2002 Statut Membre Dernière intervention 19 décembre 2002
19 déc. 2002 à 12:04
Merci pour la suggestion , mais mon type est bien public !

Le problème est plus compliqué que ça. On peut toutefois le contourner en incluant le controle (fichier .ctl) dans le projet de l'exe, mais on crée plus de fichier .ocx : le controle devient private et n'est pas réutilisable dans d'autres projets.

Si on veut absolument du code réutilisable, le type doit être déclaré dans un module de classe publique (par exemple dans une dll activeX avec l'option multiUse ou globalMultiUse), sinon il ne pourra pas être géré dans les procédures d'appel du controle (fichier .ocx dans ce cas). Il faut ensuite lier le projet de l'exe et celui du controle à la dll pour pouvoir utiliser le type. Attention toutefois au piège suivant. Si on écrit les procédures d'appel du controle de la sorte :

Public Sub MéthodedemonControle(var1 As MonType) ou
Public Sub MéthodedemonControle(var1 As Object),

un agaçant message d'erreur apparaitra (variable ByRef incompatible, ou qq chose comme ça), bien que le type personnalisé MonType soit reconnu dans tous les projets. Il faut mentionner la variable d'entrée sans définir son type :

Public Sub MéthodedemonControle(var1)
dim var2 As MonType
var2 = var1
...

J'avoue que ce pb de syntaxe n'est pas évident et m'a fait perdre pas mal de temps. Si le controle personnalisé doit rester "exotique", la gymnastique n'en vaut pas la peine et mieux vaut opter pour la première solution.
J'espère que ces remarques seront utiles à d'autres personnes.

Erick
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 déc. 2002 à 12:40
Ben en tout cas, ca m'est utilise à moi !!! Merci beaucoup pour avoir donné la réponse.

DARK SIDIOUS
0
Rejoignez-nous