2009-01-12 5 views
2

Je suis en train d'écrire une classe dans Delphi 2007 qui utilise une bibliothèque ActiveX. La classe va attraper un événement que la bibliothèque ActiveX doit exposer son propre événement qui ajoute des informations à l'événement de la bibliothèque ActiveX.Configuration du gestionnaire d'événements en Delphi 2007 et Obtenir « Listes des paramètres Differ » Erreur

La ligne de fond est que lorsque je cède ma propre procédure à l'événement de la bibliothèque ActiveX que je veux utiliser, je reçois une erreur:

E2009 Incompatible types: 'Parameter lists differ' 

Je suis certain que les listes de paramètres sont les mêmes (même nombre de paramètres et les mêmes types) donc je pense que je vais à ce sujet dans le mauvais sens.

Des suggestions ou quelqu'un peut-il poster un exemple de code de ce que j'essaie de faire?

+0

Vous êtes beaucoup plus susceptible d'obtenir une réponse pertinente si vous modifiez votre question pour inclure la liste de paramètres. Il peut y avoir un type de paramètre spécifique qui est difficile. – Argalatyr

Répondre

5

La première chose à vérifier est que la chose que vous essayez d'affecter à la propriété d'événement est une méthode . Il doit s'agir d'une procédure ou d'une fonction appartenant à une classe; il ne peut pas s'agir d'un sous-programme autonome.

Ensuite, notez que la simple confirmation que les noms des types correspondent n'est pas suffisant. Delphi permet de redéfinir un identifiant, donc le nom de type que vous voyez dans une unité ne fait pas nécessairement référence à la même chose quand vous voyez le même identifiant dans une autre unité. La signification peut même changer au milieu d'une unité. Par exemple:

unit Example; 

interface 

uses Windows; 

var 
    foo: TBitmap; 

implementation 

uses Graphics; 

var 
    bar: TBitmap; 

end. 

La variable foo est de type Windows.TBitmap, un type d'enregistrement, alors que bar est de type Graphics.TBitmap, un type de classe.

Vous pouvez laisser l'EDI vous aider à diagnostiquer ceci: Ctrl + clic sur les noms des identifiants et laissez l'EDI vous guider vers leurs déclarations. Est-ce qu'ils vous emmènent aux mêmes endroits? Sinon, vous pouvez qualifier les noms de type avec les noms d'unités. Par exemple, nous pourrions modifier la déclaration ci-dessus bar à ceci:

var 
    bar: Windows.TBitmap; 

Maintenant, il aura le même type que foo. Vérifiez le même genre de chose dans votre déclaration de gestionnaire d'événements.

1

J'ai utilisé le conseil de gabr avec le Ctrl + clic et j'ai découvert que l'un des paramètres était une constante que je n'avais pas réalisée. J'ai changé la deuxième variable en const et cela a bien fonctionné. Merci.

Questions connexes