Pôv Type (pb de type)

Messages postés
5
Date d'inscription
jeudi 11 juillet 2002
Statut
Membre
Dernière intervention
19 décembre 2002
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
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
Messages postés
5
Date d'inscription
jeudi 11 juillet 2002
Statut
Membre
Dernière intervention
19 décembre 2002

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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Ben en tout cas, ca m'est utilise à moi !!! Merci beaucoup pour avoir donné la réponse.

DARK SIDIOUS