【问题标题】:Adding TField and TDataset to Component Propertis将字段和 TDataset 添加到组件属性
【发布时间】:2015-04-02 07:20:29
【问题描述】:

我想向我的组件添加两个属性:一个 TDataSet 和一个 TField,这样当我设置 TDataset 属性时,我就可以从 DataField 属性中的字段中进行选择。
我不知道如何在 DataField 和 DataSet 属性之间建立关系。

我该怎么做?

【问题讨论】:

  • 我已经编辑了您的问题以稍微清理一下(为什么都是大写字母?)但我仍然不明白。你能再edit吗?也许解释一下为什么你想这样做?
  • 您是否正在创建自定义数据感知组件,该组件应该从数据库读取数据或将数据存储到数据库?
  • 我只想创建一个和TDBLookup ComboBox一样的组件

标签: delphi custom-component


【解决方案1】:

如果您将组件更改为具有DataSource: TDataSource 属性而不是DataSet: TDataSet 属性,Delphi 的标准TDataFieldProperty 编辑器将自动为您填充您的DataField: string 属性。然后,您可以将所需的 TDataSet 组件链接到 TDataSource 组件。

如果您希望为任何未命名为 DataFieldstring 属性显示下拉列表,您可以通过 RegisterPropertyEditor() 为该属性手动注册 TDataFieldProperty

如果您想要一个名称不是DataSourceTDataSource 属性,您可以从TDataFieldProperty 派生并覆盖其虚拟GetDataSourcePropName() 方法。

如果您必须直接接受TDataSet,则必须为您的DataField 属性编写自定义属性编辑器,并让它直接调用TDataSet.GetFieldNames()

【讨论】:

  • 非常感谢Remy,您的回答非常有用,非常感谢
  • 嗨 Remy 我需要多个数据字段,我尝试使用 RegisterPropertyEditor() 但编译器出现错误。请您详细解释一下 RegisterPropertyEditor()
  • 您看到了什么错误?你的代码是什么样的?您是否为您的组件创建了设计时包来进行此注册?请编辑您的问题以添加这些详细信息。
猜你喜欢
  • 2021-12-07
  • 1970-01-01
  • 2013-10-08
  • 2020-03-03
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 2018-03-09
相关资源
最近更新 更多