[ActiveX] Visibilité d'une propriété
Salut à tous,
Un OCX de pilotage d'une carte d'acquisition développé par ma boite (en Delphi) est utilisé par un de nos clients dans une appli en VB. En faisant une mise à jour banale de l'objet (modification interne de quelques fonctions et ajout d'une propriété), l'appli VB a refusé de marcher :
"erreur 438 : propriété ou méthode non gérée par cet objet"
Bon le message est clair et après un debuggage "à l'ancienne" (mise en commentaire de portions de code car leur VB plante et l'exécution dans l'IDE est impossible ; hyper pratique :evil: ) j'ai repéré la fonction qui pose problème ; je l'appelerai GetX et elle est définie comme ceci :
dans mon fichier du composant VCL xxx.pas :
Code:
1 2 3 4
|
TMonControle
public
function GetX: Double; |
après génération automatique par Delphi du projet ActiveX, dans le fichier xxx_TLB.pas :
Code:
1 2 3 4
|
TMonControleX = class(TOLEControl)
public
function GetX: Double; |
Ne voyant pas où est le problème je regarde le source de l'ancienne version de l'OCX et je vois que si le code du composant VCL est le même, dans le fichier TLB la déclaration et l'implémentation de cette fonction sont en commentaires !! Y'a donc 2/3 trucs que je pige pas :
> comment l'appli en VB peut-elle accéder à une fonction non déclarée (puisque en commentaire) dans le code source du contrôle OCX ?
> pourquoi elle ne peut pas accéder à la mienne vu qu'elle est déclarée en public ?
> Où sont les déclarations qui définissent l'accès aux propriétés d'un contrôle ActiveX : dans TMonControleX comme je croyais ou dans les interfaces IMonControleX, ou IMonControleXDisp ?
Merci de m'éclairer sur ces points..
A+