Events 在c+中手动调用按钮单击事件+;建设者 使用C++ Builder Borland(BCB6).

Events 在c+中手动调用按钮单击事件+;建设者 使用C++ Builder Borland(BCB6).,events,button,invoke,c++builder-6,Events,Button,Invoke,C++builder 6,我希望手动调用按钮单击事件。我做到了: FMap->bbDoneInClick(NULL); 虽然Done按钮位于FMap表单上,但出现了一些问题 我是否需要使用不同的参数调用bbDoneInClick,而不是使用NULL 使用Form1或bbDone本身,而不是NULL 它取决于事件代码本身如何使用Sender参数 此外,仅当表单已创建时,才可以安全地调用事件处理程序 如果它不访问画布,您甚至可以在TForm1::TForm1构造函数中使用它 如果需要,您需要注意在OnShow或On

我希望手动调用按钮单击事件。我做到了:

FMap->bbDoneInClick(NULL);
虽然
Done
按钮位于
FMap
表单上,但出现了一些问题


我是否需要使用不同的参数调用
bbDoneInClick
,而不是使用
NULL

使用
Form1
bbDone
本身,而不是
NULL

  • 它取决于事件代码本身如何使用
    Sender
    参数
  • 此外,仅当表单已创建时,才可以安全地调用事件处理程序
  • 如果它不访问画布,您甚至可以在
    TForm1::TForm1
    构造函数中使用它
  • 如果需要,您需要注意在
    OnShow
    OnActivate
  • 避免VCL问题或应用程序崩溃
  • 对于普通处理程序,使用主窗口就足够了。。。(我使用
    this
    而不是
    NULL
  • 如果您对多个组件使用单个偶数处理程序,那么偶数通常是通过
    Sender
    参数决定操作或目标,因此在这种情况下,您需要将指针传递到组件本身

我会用
force
更改
调用
。。。invoke意味着“出了问题”——你需要更具体一些。到底出了什么问题?有错误吗?例外?意外的行为?
bbDoneInClick()
实际上做什么?在任何情况下,
t按钮
都有一个公共的
Click()
方法,如果指定了该方法,该方法将触发
OnClick
事件处理程序。您应该调用它,而不是直接单击处理程序:
FMap->bbDoneIn->Click()(假设按钮名为
bbDoneIn
,否则替换为正确的名称)。