问题标签 [tpersistent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 编写 C++ Builder/Delphi 组件并将二进制属性保存到 DFM 文件
我编写了一个 C++ 构建器组件来显示 SVG 文件对它们执行一些操作。
现在,我发布了一个名为 SvgFile (UnicodeString) 的属性,可以在 IDE 中使用 SVG 文件的文件名对其进行初始化。这工作正常。此属性保存在 DFM 文件中,并且可以从中重新加载。
但是我必须在应用程序中提供 SVG 文件,所以我想将 SVG 保存到 DFM 文件中,因为它是使用 TImage 组件完成的。
我想我必须编写一个 TPropertyEditor 和一个 TPersistent 类,但我不知道该怎么做。
有人可以帮我这样做吗?
编辑 2013/01/17:这是一个解决方案http://www.informit.com/articles/article.aspx?p=28278&seqNum=5
谢谢你的帮助。
delphi - 我可以使用默认的 WriteComponent 操作将 Delphi TPersistent 序列化为 TComponent 的字段吗?
我对如何从具有 TPersistent 字段的 TComponent 中写出属性感到非常困惑。例如我有:
当我使用以下编写器代码时:
我只得到以下内容:
即缺少 TPersistent TChildObj。
这篇关于组件序列化的文章指出“默认情况下,组件将流式传输任何非 TComponent 类型的 TPersistent 属性。我们的 TPersistent 属性像组件一样被流式传输,并且它可能具有其他将被流式传输的 TPersistent 属性。” 但是,当我进入 System.Classes 时,在第 12950 行(XE3)附近进行了测试:
这似乎表明只有组件和子组件被序列化。如果我让 TChildObj 从 TComponent 下降(并给它一个名字),我会得到它的名字出现在书面文件中(但仍然没有属性)。
我真正不明白的是,TControl(一个组件)具有 Font 属性(TPersistent),例如,当您编写 TLabel 时,它会很好地流出。
还是这与默认属性有关?
任何帮助表示赞赏。
delphi - Delphi:TPersistent 和 csDesigning 状态
如何检测TPersistent
类处于 csDesigning 状态?
multithreading - Delphi - 未创建自定义线程
我这里有点问题。我有一个继承 TPersistent 类的自定义类,在这个自定义类内部(私有部分),我有一个自定义的 TThread,它具有覆盖的 Execute 方法,每(1000 毫秒)触发一次。一切都很好,直到我将我的 2 个自定义类移动到一个新单元......
上面的代码在主项目单元中工作得很好,但是当我将它移动到一个新单元时,线程代码不再工作,当我尝试释放一个 TMyClass 对象时,我得到一个 AV。我认为线程根本没有被构建,这就是为什么我在尝试释放它时得到一个 AV ......但为什么呢?代码在哪个单元中并不重要...
单元1:
单元2:
delphi - TCollectionItem 中的 TPersistent 组件/从 TPersistent 访问 TCollectionItem 属性
请查看 a 的波纹管代码部分TComponent
:
当方法SetField
fromTSqlField
被处理时,我想访问属性Name
fromTSqlField : TCollectionItem
以便我可以重命名它。
备注: 的所有者TCollection
可能是一个或另一个TComponent
。
请就如何做到这一点提出一些建议。
delphi - 在我的特定类中实现 Clone() 的最佳方法
在我的特定TPersistent
类中,我想提供一个Clone
函数,它返回对象的独立副本。
是否可以在后代中正常工作,而无需Clone
在每个后代中实现该功能?
这与克隆任何未知字段或深度克隆(可以使用 RTTI 完成)无关。在下面我的最小示例中,您可以看到我想要放置Clone
函数的位置。
由于它用于Assign()
复制数据,因此它适用于任何后代。问题是构造函数,请参阅评论。如何调用该后代的正确构造函数?如果这很难做到,可以假设没有一个后代在没有覆盖的情况下覆盖构造函数Clone
。
输出是
所以,正确的类出来了,它在这个最小的例子中正常工作,但不幸的是,我必要的初始化没有完成(应该出现两次)。
我希望我能说清楚,你喜欢我的示例代码:) - 我也很感激任何其他评论或改进。我的Assign()
实施好吗?