如何访问框架上的组件

问题描述 投票:0回答:2

我有一份包含许多表格的申请表。每个表格上还有一个复选框。

我可以通过名称访问表格,例如:

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);

没有帮助

delphi
2个回答
1
投票

这是标准的VCL框架吗?

框架中的控件应该可以从外部调用者直接访问。

例如,如果您有一个框架“myFrame”,其中包含“btnFrameButton”,并且您想从框架外部的事件(例如,在包含该框架的表单中)单击该按钮,那么您可以简单地说

myFrame.btnFrameButton.Click;

这不行吗?


0
投票

如果

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;
© www.soinside.com 2019 - 2024. All rights reserved.