Как найти владельца по объекту в Delphi?
Я хотел бы создать процедуру, которая возвращает мне имя формы, в которой расположен объект. Например:
У меня есть TPanel и внутри TPanel один TButton. Я передам в качестве параметра имя функции TButton и хочу, чтобы функция возвращала мне имя формы, где находится эта кнопка.
Как?
LE:
function TForm1.DoSomething(Obj: TComponent): String;
var AClass : String; I : Integer;
begin
AClass := TComponent(Obj).Owner.ClassName;
if (AClass = 'TForm') then
Result := TComponent(Obj).Name
else
Result := TComponent(Obj).Owner.Name;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
NomeForm := DoSomething(Button3);
ShowMessage(NomeForm);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
NomeForm := DoSomething(Form1);
ShowMessage(NomeForm);
end;
2 ответа
Вот простой пример в том же состоянии, которое вы упомянули. Кнопка на панели возвращает имя формы. функция ReturnForm, будет работать рекурсивно, пока не найдет форму
function TForm22.ReturnForm(aParent: TWinControl): TWinControl;
begin
Result:= nil;
if aParent <> nil then
begin
if aParent.Parent <> nil then
Result:= ReturnForm(aParent.Parent)
else
Result:= aParent;
end;
end;
procedure TForm22.Button1Click(Sender: TObject);
begin
Showmessage(ReturnForm(Button1).Name);
end;
Осторожнее с переводами с португальского на английский:)
Мне кажется, что процедура GetParentForm
объявлено в Forms
Устройство делает то, что вы хотите. Взгляни на