如何调用FormClose事件处理程序?

时间:2016-02-02 13:45:59

标签: delphi

我尝试调用FormClose方法,但是当我尝试时,我的参数有问题:

FormName.FormClose(nil, CaFree);

通常我可以使用nilsender as TOBject使用参数调用组件的事件处理程序。但现在我收到了错误:

  

常量对象不能作为var参数传递

我为这两个TObject和TAction值尝试了很多组合。对于TObject,我尝试了`sender as TObject',以及TAction所有参数,如CaFree等。

1 个答案:

答案 0 :(得分:4)

第二个参数是var参数,它是编译器错误消息告诉您的参数。所以你需要传递一个变量。你无法传递文字。

var
  Action: TCloseAction;
....
Action := caFree;
Name.FormClose(nil, Action);

请注意,您几乎肯定不应该这样做。您不打算直接调用事件处理程序。框架将在适当的时候调用它们。我认为您错误地认为您需要直接触发此事件处理程序,甚至在表单关闭的正常情况之外执行代码。

作为一般规则,如果需要直接在事件处理程序中调用代码,那么通常的方法是首先将其提取到一个可以直接调用的单独方法。然后重构事件处理程序以调用该单独的方法。