如何在没有用户干预的情况下调用delphi中的事件?

3 delphi delphi-xe2

我的表格上有一个按钮.以下是该按钮的单击事件

procedure Form1.btnOKClick(Sender: TObject);
begin
//Do something
end;
Run Code Online (Sandbox Code Playgroud)

只有当我点击按钮时才会调用此事件,对吧?

如何在没有任何用户干预的情况下自动调用此事件?

Dav*_*nan 18

调用OnClick附加到控件的事件处理程序的最佳方法是在控件上调用该Click方法.像这样:

btnOK.Click;
Run Code Online (Sandbox Code Playgroud)

直接调用事件处理程序会强制您提供Sender参数.调用该Click方法可以控制所有工作.单击按钮的Windows消息处理程序的实现调用该Click方法.

但我是第二个在whosrdaddy回答中表达的意见.您应该将按钮后面的逻辑拉出到一个单独的方法中.


who*_*ddy 15

不要将您的businesslogic放入事件处理程序.当应用程序变大时,这将使您的代码无法读取.

通常你会这样做:

procedure TForm1.DoSomething;
begin
 // do something
end;

procedure TForm1.btnOKClick(Sender: TObject);
begin
 DoSomething;
end;
Run Code Online (Sandbox Code Playgroud)

那么您需要做的就是DoSomething从代码中的其他部分调用

  • @GolezTrol:我正在重新考虑一个以这种方式写的100k LOC庞然大物,我之前的那个人需要受到惩罚:) (4认同)

LU *_* RD 5

您可以像在任何其他方法中一样在代码中调用此事件.

...
btnOkClick(Self.btnOk); // Sender in this case is the btnOk
...
Run Code Online (Sandbox Code Playgroud)

发件人可以是你喜欢的任何对象或零.

  • 你没有调用该事件,只需调用一个方法即可.您无法调用事件,只能调用与事件相关的方法. (6认同)