【发布时间】:2016-02-05 10:48:37
【问题描述】:
我有一个派生自 Tobject 的类。在我的课堂上,我想使用受保护的控制属性。这是我的代码
type
THack = class(Tcontrol);
TMyClass = class(TObject)
private
A: string;
B: string;
C: string;
D: string;
public
procedure DoSomthing(MyForm: TForm);
end;
procedure TMyClass.DoSomthing(MyForm: TForm);
var
I: Integer;
begin
for I := 0 to MyForm.ControlCount - 1 do
begin
// I want to read Font property
showmessage(inttostr(THack(MyForm.Controls[I]).Font.Size));
end;
end;
有没有其他方法可以访问受保护的属性
【问题讨论】:
-
您可能想改用表单的公共
Controls属性。如果您真的想使用protected属性,请从拥有该属性的类继承,如下所示:TMyClass = class(TControl)或TMyClass = class(THack) -
@fantaghirocco 要访问字体属性,我必须输入 TMyClass(MyForm.Controls[I]).Font.size
-
@fantaghirocco - 字体在 TControl 中受到保护。
-
而且我也可以访问其他字段,例如 TMyClass(MyForm.Controls[I]).A 这是错误的
-
您想访问表单上所有控件的属性还是只访问特定的一组控件?如果需要特定的一堆,那么我建议更好地定义这些控件的选择。如果您知道这些控件的类,那么您很可能能够通过适当的转换更好地控制它们。
标签: delphi