TScreen-> Forms показывает неожиданные дополнительные формы - PullRequest
1 голос
/ 22 января 2020

Я использую 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;
}

1 Ответ

4 голосов
/ 22 января 2020

Вы можете использовать свойство ClassName, чтобы узнать немного больше информации.

Но это может не выявить ничего полезного, если, например, некоторые формы просты TForm или вы не узнаю имя Чтобы по-настоящему понять, что представляют собой эти формы, установите точку останова в TCustomForm.Create и проверяйте стек вызовов при каждом срабатывании точки останова.

...