如何从 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;
我想从 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;