加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi – 使用GetPropValue()获取属性值

发布时间:2020-12-15 09:41:00 所属栏目:大数据 来源:网络整理
导读:我正在使用Delphi的GetPropValue()函数来获取某些TControl类型对象的某些属性的值.当我获得诸如Value,Opacity等简单属性值时,一切正常,但是因为我使用firemonkey有一些扩展属性,例如RotationCenter,它有RotationCenter.X和RotationCenter.Y,甚至属性TextSett
我正在使用Delphi的GetPropValue()函数来获取某些TControl类型对象的某些属性的值.当我获得诸如Value,Opacity等简单属性值时,一切正常,但是因为我使用firemonkey有一些扩展属性,例如RotationCenter,它有RotationCenter.X和RotationCenter.Y,甚至属性TextSettings中的文本,在这些带有子类型的属性中,我无法获取值.

在这个例子中,我正确地得到了值:

If IsPublishedProp (Component_cc,'Value') then
  EditValue.Text: = GetPropValue (Component_cc,'Value',true);

Component_cc:TControl;并且是动态创建的,它也可以是任何类型的Firemonkey组件(到目前为止一切正常,一切正常).

当我需要使用下面的表格时,它不起作用.

If IsPublishedProp (Component_cc,'RotationCenter.X') then
  EditRotationCenterX.Text: = GetPropValue (CC_component,'RotationCenter.X',true);

有没有人知道通过这个功能扩展这些属性的方法?

解决方法

首先,CC_component的RotationCenter属性实际上是TPosition类的一个实例,它从TPersistent下移.

其次,调用IsPublishedProp时不能使用点分表示法.

您可以使用GetObjectProp首先检索内部TPosition实例,然后从那里访问X属性:

(假设一个简单的FMX应用程序,其中一个表单包含一个名为Button1的TButton和一个名为EditRotationCenterX的TEdit.)

procedure TForm1.Button1Click(Sender: TObject);

var
   CC_component : TComponent;
   CC_component_RotationCenter : TPosition;

begin
   CC_component := Button1;

   if IsPublishedProp(CC_component,'RotationCenter') then
      begin
         CC_component_RotationCenter := TPosition(GetObjectProp(CC_component,'RotationCenter'));
         EditRotationCenterX.Text := CC_component_RotationCenter.X.ToString;
      end
end;

更新,对于Set类型的属性:

对于Set type属性,您需要使用GetOrdProp检索其序数值.这将是表示当前值中包含哪些元素的位数组.然后,您只需测试是否设置了适当的位.这是我更喜欢的方法.

或者,您可以使用GetSetProp,它将返回Set的当前值中元素的文本表示.例如,如果Set的值为[TCorner.BottonLeft,TCorner.TopRight],您将返回字符串值“TopRight,BottonLeft”.然后,检查目标元素的名称是否出现在返回的字符串中的任何位置.如果Delphi RTL或FMX库将来发生变化,则此方法很容易失败.

(这个例子将一个名为Rectangle1的TRectangle形状和一个名为cbCornerBottonRight的TCheckBox添加到上面的简单FMX App

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读