我正在使用 RAD Studio 10 处理 Windows VCL 应用程序。我有两个表单,Form1(MainForm in Unit1.cpp)和一个辅助表单Form2(in Unit2.cpp)。我设法嵌入Form2到Form1. 这只是说明问题的设置。我的真实项目有多个表格。
关闭时Form2,VCL 触发Form2::OnClose()事件。知道这Form2是在Form1(MainForm)中动态创建的,是否有一个Form1事件会在Form2关闭时触发?或者内部Form1知道Form2正在关闭的东西?
- 我正在考虑自定义一个事件处理程序,
OnChildFormClose但我做不到。 - 我尝试将要在关闭
Form1时执行的代码包装Form2在公共函数中并在Form2::OnClose()事件中调用它,并且它在一定程度上起作用,但如果您有多个表单,这不是一个好方法。
//FROM THE unit1.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//-----------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-----------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//-----------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TForm2 *form2 = new TForm2(this);
form2->ManualDock(container);
form2->Show();
}
//FROM unit2.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
//-----------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//-----------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//-----------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Close();
}
//-----------------------------------------------------------------------
我可以用一个我们可以动态转换来检查它是否是的OtherFormsonClose(*Sender)事件,或者我错了?我会很感激一些指导。Form1SenderForm2