问题描述
我想从 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;