将 private/protected/public 方法设置为事件处理程序是否安全?
Is safe to set a private/protected/public method as event handler?
在分配事件处理程序时,我注意到 Object Inspector
只允许在没有显式访问修饰符的方法之间进行选择。
以下class为例:
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
:
由于这个原因,我想知道通过代码将 private
/protected
/public
方法设置为事件处理程序是否安全,或者是否可能有一些这种做法产生的问题。
MyButton.OnClick := MyButtonPrivateClick;
//...
这是绝对安全的,不用担心任何隐藏的问题。例如,在编写内部有子组件的自定义组件(而不是表单)时,这尤其常见。您几乎可以将它放在任何您想要的位置,但我建议将它保持在 private
以下。
在分配事件处理程序时,我注意到 Object Inspector
只允许在没有显式访问修饰符的方法之间进行选择。
以下class为例:
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
:
由于这个原因,我想知道通过代码将 private
/protected
/public
方法设置为事件处理程序是否安全,或者是否可能有一些这种做法产生的问题。
MyButton.OnClick := MyButtonPrivateClick;
//...
这是绝对安全的,不用担心任何隐藏的问题。例如,在编写内部有子组件的自定义组件(而不是表单)时,这尤其常见。您几乎可以将它放在任何您想要的位置,但我建议将它保持在 private
以下。