我有一个应用程序,它有多种形式。所有这些表单都有一个 PopupMenu。我以编程方式构建菜单项,所有这些都在一个共同的根菜单项下。我希望所有菜单项都调用相同的过程,并且菜单项本身基本上是作为一个参数......
当我只有一个表单执行此功能时,我就可以进行此工作。我现在有多种表格需要这样做。我正在将所有代码移动到一个公共单元。
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.
当我需要从每个窗体调用弹出窗口时,我调用我的顶级过程(在 CommonUnit 单元中),将每个窗体的顶级菜单项的名称传递给公共单元中的顶级过程。
我正在使用代码向我的 PopupMenu 添加项目。
M1 := TMenuItem.Create(TopMenuItem);
M1.Caption := FieldByName('NAME').AsString;
M1.Tag := FieldByName('ID').AsInteger;
M1.OnClick := BrowseCategories1Click;
TopMenuItem.Add(M1);
我在编译时收到一条错误消息。具体来说, OnClick 行正在抱怨
不兼容的类型:“方法指针和常规过程”。
我已经定义了 BrowseCategories1Click,就像我之前在单个表单上执行此操作时一样。唯一的区别是它现在是在一个通用单元中定义的,而不是作为表单的一部分。
它被定义为
procedure BrowseCategories1Click(Sender: TObject);
begin
//
end;
解决这个问题的最简单方法是什么?
谢谢 GS