我使用Delphi的GetObjectProp函数来获取表单组件的属性,我得到几个组件的所有属性与GetObjectProp TextSettings.Font.Style属性,但我不能让TextSettings.Font例如,像TLabel这样的组件的样式(粗体,斜体,...)属性。我需要知道组件文本是粗体还是斜体。我正在尝试获取这些属性的过程如下:获取采用Delphi东京10.2
procedure Tfrm1.aoClicarComponente(Sender: TObject);
var
TextSettings: TTextSettings;
Fonte: TFont;
Estilo: TFontStyle;
Componente_cc: TControl;
begin
Componente_cc := TControl(Label1);
if IsPublishedProp(Componente_cc, 'TextSettings') then
begin
TextSettings := GetObjectProp(Componente_cc, 'TextSettings') as TTextSettings;
if Assigned(TextSettings) then
Fonte := GetObjectProp(TextSettings, 'Font') as TFont;
if Assigned(Fonte) then
Estilo := GetObjectProp(Fonte, 'Style') as TFontStyle; // <-- error in this line
if Assigned(Estilo) then
Edit1.text := GetPropValue(Estilo, 'fsBold', true);
end
end;
上面标出的行显示的错误是。
[dcc64错误] uPrincipal.pas(1350):E2015操作并不适用于这一运算对象类型
我在做什么错?
在这个例子中我简化了代码更好理解,但在实际应用中它更复杂,在运行时创建组件,并且可以是任何Class,所以我使用rtti。我将其更改为TFontStyles segestao,但错误仍然存在。 – Anderson
'Style'是'TFontStyles'类型,它不是一个对象类型,而是一组属性类型。而'fsBold'不是一个属性,而是该集合中可能的成员。 – Victoria
但是,如果属性不是对象类型,我该如何获取属性? – Anderson