如何序列化 Delphi FMX 文件中的值数组?

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

我正在使用 Delphi FMX 应用程序,需要向我的组件之一添加新属性。该属性是一个

TAlphaColor
数组,定义为
Colors: TArray<TAlphaColor>;
。我很好奇这个属性将如何在组件的配对
.fmx
文件中表示。具体来说,我想了解是否可以直接在
Colors: [125487, 159875]
文件中存储像
.fmx
这样的值数组,如果可以,通常是如何完成的。

根据我的研究,似乎

TPropertyEditor
可能与在 IDE 中处理自定义属性有关,但我不确定它是否也会影响从
.fmx
文件存储或读取属性的方式。据我了解,
TPropertyEditor
主要用于在IDE中添加自定义编辑器,不一定用于修改数据在
.fmx
文件中序列化或反序列化的方式。

问题:

  1. 是否可以直接在
    TAlphaColor
    文件中序列化
    .fmx
    数组?
  2. 如果是,如何格式化
    .fmx
    文件中的数组以确保正确加载和保存属性?

任何相关文档的指导或参考将不胜感激!

delphi firemonkey
1个回答
0
投票

制作自定义属性编辑器对 DFM/FMX 流系统没有影响。 流本身并不支持动态数组。 因此,您必须手动传输数组数据。 让您的组件重写虚拟

TComponent.DefineProperties()
方法来调用
TFiler.DefineProperty()
TFiler.DefineBinaryProperty()
,以便您可以为数组数据提供 getter/setter 回调。

但是,我质疑为什么你首先要公开这样的动态数组。 持有具有

TCollection
属性的
TCollectionItem
对象可能更有意义,并且流系统本身支持集合。
    

© www.soinside.com 2019 - 2024. All rights reserved.