Firemonkey:如何使用 TScreen.Forms 遍历应用程序中的所有表单

Firemonkey: How to iterate through all forms in the application using TScreen.Forms

我正在尝试遍历我在应用程序中打开的表单。我找到了 FMX.Forms.TScreen.Forms 的文档,看起来它可以用来实现我的目标。但是,我对应该如何使用它感到困惑。

起初我在表单的 CPP 文件中的一个函数中尝试了这个:

ShowMessage( Forms::TScreen::FormCount );

这产生了错误 'Member TScreen::FormCount cannot be used without an object'

我认为这意味着我需要尝试从我的表单或全局 Application 变量访问此 属性。我都试过了

this->Forms...
Application->Forms...

this->TScreen...
Application->TScreen...

然而,FormsTScreen 都不存在于这些对象中。

我该如何访问 Forms.TScreen.Forms

以下是行之有效的方法:

ShowMessage(Screen->FormCount);

Screen 是一个全局对象,如 Application。编译器说 FormCount 不是静态方法或 smth.

这个错误给了你一个线索:

Member TScreen::FormCount cannot be used without an object

TScreen 是一个 class,不是对象。 FormCount 不是 class 的静态成员,因此您需要 TScreen class 的对象实例。并为您提供了这样一个对象-全局Screen对象:

ShowMessage( Screen->FormCount );

文档中有说明:

FMX.Forms.TScreen

There is a global variable, Screen, of type TScreen, which is instantiated for use by any application with a GUI. Use Screen to obtain information about the current state of the screen in an application.

FMX.Forms.Screen

extern DELPHI_PACKAGE TScreen* Screen;