在分配事件处理程序时,我注意到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
:
由于这个原因,我想知道是否可以通过代码将private
/ protected
/ public
方法设置为事件处理程序,或者是否可能存在某些问题从这种做法。
MyButton.OnClick := MyButtonPrivateClick;
//...
答案 0 :(得分:4)
这是非常安全的,无需担心任何隐藏的问题。例如,在编写自定义组件(而不是表单)时尤其常见,该组件在其内部具有子组件。您可以将它放在任何您想要的地方,但我建议将其保留在private
下。