"All TObject"... => Including TStringList, TStream, ....
Or just components/controls?
And if the latter, only those that are part of the form (and in the lfm) or all other too?
E.g. if your form does not have any button on it, and does not have any field of type TButton... You can still do
procedure foo;
var
b: TButton; //local variable
begin
b:= TButton.Create(Form1);
b.parent := Form1;
end;
Such local only used stuff, will be hard to find.
Equally hard, any field on the form that is not published.
Also
TForm1 = class(TForm)
FLabeledEdit: TLabeledEdit;
There will be a TEdit on the form, but there is no field of type TEdit.
And you can of course have lfm and form out of sync (though likely that gives error at runtime). In that case too, classes may be used, that aren't found via the form.
For all else you, if you have the form (or a list of all forms), you can iterate over the RTTI of the form.
You may have to recursively go over the RTTI of controls on the form (e.g. for tframe, maybe others).
So depending on the above is your question: How to iterate the RTTI?
Mind that there is also RegisterClass and such classes can be gotten from some list. But that may just mean, the unit that does the registration is used, the class itself may or may not be in use.