TScreen->Forms 显示意外的额外表格

TScreen->Forms Shows Unexpected Extra Forms

我正在使用 C++Builder 10.3 Rio 和 VCL windows 应用程序。我正在使用 TScreen->Forms 获取有关我的程序打开表单的信息。这表明 FormCount 比我预期的要高。我的应用程序有两个打开的窗体(1)主程序窗体和(2)数据输入对话框。当我检查 Screen->FormCount 时,它显示 6 种形式。当我在下面的 for 循环中检查表单名称和标题时,只有我的 2 个表单有名称和标题。其他表单名称和标题为 NULL。我可以使用 dynamic_cast 或表单名称来识别我的表单。其他额外形式是什么?我如何识别其他表格?

UnicodeString MyName, MyCaption;

for(int j=0; j<Screen->FormCount; j++){
  MyName    = Screen->Forms[j]->Name;
  MyCaption = Screen->Forms[j]->Caption;
  TMyForm *MyLocal = dynamic_cast<TMyForm *>( Screen->Forms[j] );
}

for(int j=0; j<Screen->CustomFormCount; j++){
  MyName    = Screen->CustomForms[j]->Name;
  MyCaption = Screen->CustomForms[j]->Caption;
}

您可以使用 ClassName 属性 查找更多信息。

但是,如果某些表格很简单 TForm,或者您不认识这个名字,那么这可能不会显示任何有用信息。要真正找出这些形式是什么,请在 TCustomForm.Create 中设置一个断点,并在每次触发该断点时检查调用堆栈。