Как обнаруживается родительская форма для контроля?

Необходимо определить родительскую форму в Delphi (FireMonkey 3) для любого элемента управления в этой форме.

Какой самый простой способ для этого?

1 ответ

Решение

Root Свойство элемента управления указывает на самого верхнего Родителя.

Root имеет интерфейсный тип IRoot, призвание GetObject на это приводит в форме. Форма может быть типа TCustomForm, TCustomForm3D, TForm, TForm3D все которые имеют TCommonCustomForm как предок:

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;
Другие вопросы по тегам