Delphi:单击控件时如何调用方法?

标签 delphi events event-handling interface

我有一个方法:

procedure Frob(Sender: TObject);

当我点击一个菜单项时我想调用它。

该方法通过一个界面来找我:
animal: IAnimal;

IAnimal = interface
   procedure Frob(Sender: TObject);
end;

问题围绕分配给 OnClick 的内容展开。菜单项(即控件)的事件处理程序:
var
   animal: IAnimal;
   ...
begin
   ...
   menuItem := TMenuItem.Create(FileMenu)
   menuItem.Caption := 'Click me!';
   menuItem.OnClick :=  <-------- what to do
   ...
end;

显而易见的选择,my first attempt, and the wrong answer is :
   menuItem.OnClick := animal.Frob;

那么如何可以当用户单击控件时我调用一个方法?

也可以看看
  • Why doesn't it work?
  • 最佳答案

    让您拥有的任何对象将动物保存在私有(private)字段中,然后设置一个调用它的方法。像这样:

    procedure TMyClass.AnimalFrob(Sender: TObject);
    begin
       FAnimal.Frob(sender);
    end;
    

    然后解决方案变得简单:
    menuItem.OnClick := self.AnimalFrob;

    关于Delphi:单击控件时如何调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2829844/

    相关文章:

    javascript - 我可以向从代码触发的事件添加新属性吗

    delphi - 如何初始化声明为局部变量的记录?

    ios - 如何从 UITableViewCell 中的 Switch 捕获事件?

    JavaScript 函数/事件监听器无法正常运行

    actionscript-3 - as3 中的自定义事件类型标识符是否需要唯一?

    javascript - 不使用库的 IE 中的自定义事件

    delphi - 如何使用诸如乘法之类的混合模式来填充矩形,而不仅仅是简单的透明度

    delphi - Access 文本字段上的唯一索引是否始终不区分大小写?

    sql - SQLite Delphi认为不正确的异常

    c# - 两种类型的回发事件