How detects parent form for Control?

delphi, firemonkey-fm3

Solution

The `Root` property of a control points to the uppermost Parent.

Root is of interface type `IRoot`. Calling `GetObject` on it results in the Form. The Form can be of type `TCustomForm`, `TCustomForm3D`, `TForm`, `TForm3D`, all which have `TCommonCustomForm` as ancestor:

function GetParentForm(Control: TFmxObject): TCommonCustomForm;
begin
  if (Control.Root <> nil) and
      (Control.Root.GetObject is TCommonCustomForm) then
    Result := TCommonCustomForm(Control.Root.GetObject)
  else
    Result := nil;
end;

Problem

Need to detect the Parent Form in Delphi (FireMonkey 3) for any Control on this form. What is the easiest way for it?

Original source