【发布时间】:2023-03-28 15:22:01
【问题描述】:
我正在使用 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(j=0; j<Screen->CustomFormCount; j++){
MyName = Screen->CustomForms[j]->Name;
MyCaption = Screen->CustomForms[j]->Caption;
}
【问题讨论】:
-
一些可视化组件在 winapi 中作为窗口处理,并带有自己的句柄...见is ther a way an app can display a message without the use of messagebox API?
-
@Spektre 虽然这是真的,但这些组件不会出现在
Screen->Forms列表中。只有TForm和派生对象存储在该列表中
标签: delphi c++builder