IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

[ActiveX] Visibilité d'une propriété


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut [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 ) 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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+

  2. #2
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    OK pour qu'une fonction soit visible il faut qu'elle apparaisse dans les déclarations de l'interface IMonControleX = interface(IDispatch)

  3. #3
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Oui, il ne faut pas confondre Interface (COM) et CoClasse. Les logiciels qui utilisent l'objet COM ne "voient" que ce qui est défini dans l'interface alors que la CoClasse (la classe Delphi qui implémente l'interface) a bien sûr accès à tous ses membres).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB]Comment créer une propriété pour un activex
    Par darksantor dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/06/2006, 21h17
  2. Décomposition d'une propriété : grammaire ?
    Par mathieu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 04/05/2004, 09h47
  3. Réponses: 10
    Dernier message: 19/02/2004, 12h58
  4. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  5. Récupération valeur d'une propriété type TStrings
    Par Stéphane Vaillant dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2003, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo