【发布时间】:2020-09-01 20:27:53
【问题描述】:
我在 VCL 应用程序中使用 TActions 和 TButtons。将 TButtons Action 字段设置为现有操作可集中代码。
actions Execute 方法如下所示:
void __fastcall MyFrame::MyActionExecute(TObject *Sender)
{
//Some action code
}
将 MyAction 分配给名为 MyBtn 的 TButton 并查看操作 ActionComponent:
void __fastcall MyFrame::MyActionExecute(TObject *Sender)
{
if(MyAction->ActionComponent == MyBtn)
{
//.. action code when the MyBtn was clicked..
}
}
看起来效果不错。
但是,以编程方式调用 MyAction 的 Execute 方法,如下所示:
MyActionExcecute(NULL);
似乎没有将 ActionComponent 设置为 NULL,但“仍然”使用 MyBtn 作为 ActionCompoent。因此,即使未单击按钮,上面的 if 语句也会计算为 true。
问题是,处理按钮单击和手动调用动作执行方法的正确方法是什么?
我知道我可以检查 Sender 参数是否为 NULL,如果是,我可以假设它不是按钮。
【问题讨论】:
标签: c++builder vcl