我有一份包含许多表格的申请表。每个表格上还有一个复选框。
我可以通过名称访问表格,例如:
Form := Application.FindComponent('frm1') as TForm;
这个效果很好。我还可以访问表格上的复选框:
Component := Form.FindComponent('CheckBox');
并可以设置它:
TCheckBox(Component).Checked := true
这一切都有效。
每个表单还包含一个框架,框架上还有一个复选框。
问题:
如何访问框架上的复选框?
其中有很多事情:
Form := Application.findComponent('frm1') as TForm;
Component := Form.FindComponent(TestFrame.CheckBox);
没有帮助
这是标准的VCL框架吗?
框架中的控件应该可以从外部调用者直接访问。
例如,如果您有一个框架“myFrame”,其中包含“btnFrameButton”,并且您想从框架外部的事件(例如,在包含该框架的表单中)单击该按钮,那么您可以简单地说
myFrame.btnFrameButton.Click;
这不行吗?
如果
Form
是 Owner
的 Frame
并且您有一个 Name
分配给 Frame
,那么 Form.FindComponent()
就可以正常工作:
Frame := Form.FindComponent('FrameName') as TFrame;
另一方面,如果您在设计时将
Frame
放到 Form
上,那么 Form
将有一个 published
数据成员指向 Frame
(与 CheckBox
相同,就此而言,以及您在设计时放置在 Form
上的任何其他控件)。所以只需使用该数据成员即可,例如:
Form := Application.FindComponent('frm1') as TMyForm;
Form.CheckBox.Checked := True;
Form.TestFrame.CheckBox.Checked := True;