【发布时间】:2020-06-08 08:12:33
【问题描述】:
我需要更改通过容器控件的Controls 属性收集的控件的 FONT 属性:
for i := 0 to ContainerControl.ControlCount - 1 do
begin
ContainerControl.Controls[i].Font.Size := 8; // error
end;
为此,我需要将ContainerControl.Controls[i] 类型转换为具有 FONT 属性的 TWinControl 类。有这样的课吗?或者如何检测特定的 TWinControl 是否具有 FONT 属性?或者我如何将特定的 TWincontrol 类型转换为特定的其他 TWinControl 的类型?
【问题讨论】:
-
为什么要这样做?如果您有一个带有很多子控件的窗口控件,您可以通过简单地更改父控件的字体来更改所有子控件的字体。默认情况下这是有效的,因为默认情况下
ParentFont是True。否则,如果你知道你只有少量可能的类,你可以做一个简单无聊的if Controls[i] is TEdit then TEdit(Controls[i]).Font.Name := 'Comic Sans MS' else if Controls[i] is TButton then... -
具体原因这里解释的太复杂了,我不能用
ParentFont。 -
你错了。您可以使用 ParentFont
-
如果已分配(GetPropInfo(ContainerControl.Controls[i], 'font')) 然后
-
请记住,某些控件可能有超过 1 个字体属性。当然,如前所述,有主要的
Font,但也可能有不同的元素需要单独的字体属性。比如TChromeTabs这个第三方控件就有很多。
标签: delphi rtti delphi-10.3-rio