如何从 DLL Delphi 应用程序中获取所有表单

How to get all the forms from a DLL Delphi Application

我想从 Delphi DLL Application for Casting 中获取所有表单,类似这样但不使用 MDIChild 表单而是使用 fsNormal 表单:(这是来自 Delphi 4,我需要一些东西在 Delphi RAD STUDIO 中类似,但我不知道如何完成此操作)

for i:= Application.MainForm.MDIChildCount-1 downto 0 do
    if (Application.MainForm.MDIChildren[i] is FormNameNeeded) then
    begin
      variable := (Application.MainForm.MDIChildren[i] as FormNameNeeded).FunctionNeeded;
      break;
    end;

根据您在评论中所说的澄清(完全重述)您的问题,您不需要遍历所有表格。

您处于 Form2 的上下文中。由于 Form2 是“ManualDocked to a Form1 PageControl”,因此 Form2 的 Parent 属性 将是 PageControl(或更可能是 TabSheet)

鉴于 TabSheet,访问托管它的表单很简单。你可以使用这样的东西:

  var
    pCandidate:  TComponent;
  begin
    pCandidate:=Self.Parent;
    if(pCandidate<>nil) then
    begin
      while((pCandidate<>nil) And not(pCandidate is TForm1)) do
        pCandidate:=pCandidate.Owner;
    end;
    if(pCandidate<>nil) then
      TForm1(pCandidate).FunctionNameNeeded();
  end;