Configuration du gestionnaire d'événements dans Delphi 2007 et obtention de l'erreur «Différences entre les listes de paramètres»

StackOverflow https://stackoverflow.com/questions/434126

Question

J'essaie d'écrire une classe dans Delphi 2007 qui utilise une bibliothèque ActiveX . La classe interceptera un événement dans lequel la bibliothèque ActiveX doit exposer son propre événement qui ajoute des informations à l'événement de la bibliothèque ActiveX.

En bout de ligne, lorsque j'attribue ma propre procédure à l'événement de la bibliothèque ActiveX que je souhaite utiliser, un message d'erreur s'affiche:

E2009 Incompatible types: 'Parameter lists differ'

Je suis certain que les listes de paramètres sont les mêmes (le même nombre de paramètres et le même type), je pense donc que je ne le fais pas correctement.

Avez-vous des suggestions ou quelqu'un peut-il publier un exemple de code de ce que j'essaie de faire?

Était-ce utile?

La solution

La première chose à vérifier est que l'élément que vous essayez d'attribuer à 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. ce ne peut pas être un sous-programme autonome.

Ensuite, notez que simplement confirmer que les noms des types correspondent ne suffit pas. Delphi permet de redéfinir un identifiant. Ainsi, le nom du type que vous voyez dans une unité ne fait pas nécessairement référence à la même chose lorsque 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 a le type Windows.TBitmap , un type d'enregistrement, alors que bar a le type Graphics.TBitmap , un type de classe.

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

var
  bar: Windows.TBitmap;

Maintenant, il aura le même type que toto . Recherchez le même type de chose dans votre déclaration de gestionnaire d'événements.

Autres conseils

J’ai utilisé le conseil de gabr avec la combinaison de touches Ctrl + clic et 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 un const et cela a bien fonctionné. Merci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top