将private / protected / public方法设置为事件处理程序是否安全?

时间:2017-02-27 14:24:24

标签: delphi access-modifiers eventhandler

在分配事件处理程序时,我注意到Object Inspector只允许在没有显式访问修饰符的方法之间进行选择。

以下面的课程为例:

  TMyForm = class(TForm)
    MyButton: TButton;
    procedure MyButtonClick(Sender: TObject);
  private
    procedure MyButtonPrivateClick(Sender: TObject);
  protected
    procedure MyButtonProtectedClick(Sender: TObject);
  public
    procedure MyButtonPublicClick(Sender: TObject);
  end;

在下拉列表中,Object Inspector仅显示MyButtonClick

enter image description here

由于这个原因,我想知道是否可以通过代码将private / protected / public方法设置为事件处理程序,或者是否可能存在某些问题从这种做法。

MyButton.OnClick := MyButtonPrivateClick;
//...

1 个答案:

答案 0 :(得分:4)

这是非常安全的,无需担心任何隐藏的问题。例如,在编写自定义组件(而不是表单)时尤其常见,该组件在其内部具有子组件。您可以将它放在任何您想要的地方,但我建议将其保留在private下。