Méthode de pointeur et de procédure régulière incompatible

J'ai une application qui a de multiples formes. Toutes ces formes ont un PopupMenu. - Je construire les éléments de menu par programmation, le tout sous une racine commune élément de menu. Je veux que TOUS les éléments de menu pour appeler la même procédure, et l'élément de menu lui-même est fondamentalement agissant comme un argument....

J'ai eu ce travail quand j'ai juste eu une forme de faire de cette fonctionnalité. J'ai maintenant plusieurs formes de devoir faire cela. Je suis passer tout mon code à une unité commune.

Example.
Form A has PopupMenu 1.  When clicked, call code in Unit CommonUnit.
Form B has PopupMenu 2.  When clicked, call code in unit CommonUnit.

Quand j'ai besoin d'appeler mon menu contextuel de chaque forme, je l'appelle mon haut niveau de la procédure (qui est dans l'unité CommonUnit), en passant le nom de la partie supérieure de l'élément de menu de chaque forme de haut niveau de la procédure dans l'unité commune.

Je suis ajoutant des articles à mon PopupMenu avec code.

M1 := TMenuItem.Create(TopMenuItem);
M1.Caption := FieldByName('NAME').AsString;
M1.Tag := FieldByName('ID').AsInteger;
M1.OnClick := BrowseCategories1Click;
TopMenuItem.Add(M1);

Je reçois un message d'erreur quand je compile. Plus précisément, le OnClick ligne est de se plaindre

Types incompatibles: 'pointeur de méthode et de procédure régulière'.

J'ai défini BrowseCategories1Click exactement comme il était avant, quand je faisais cela sur un seul formulaire. La seule différence est qu'il est maintenant définie dans une unité commune, plutôt que comme faisant partie d'un formulaire.

Il est défini comme

procedure BrowseCategories1Click(Sender: TObject);
begin
//
end;

Quelle est la façon la plus simple de contourner ce problème?

Merci
GS

InformationsquelleAutor user1009073 | 2012-07-03