【问题标题】:TColumn.FieldName property editorTColumn.FieldName 属性编辑器
【发布时间】:2012-11-29 04:07:24
【问题描述】:

我正在分析DBGrids.pas 单元。有一个TColumn 类发布了FieldName 属性

property  FieldName: String read FFieldName write SetFieldName;

它被声明为一个字符串,但在对象检查器中它显示为一个可编辑的组合框 (TDataFieldProperty)

我分析了几乎所有DBGrids 单元,但找不到完成该技巧的地方。我应该去哪里看?

【问题讨论】:

  • 查看 DBReg.pas 单元。
  • 我认为它是由RegisterPropertiesInCategory 中的DBReg.pas 完成的,正如您所写。你能发布一个答案让我接受吗?
  • 我对 IDE 编辑器几乎一无所知,因此我无法证实这一点,也无法为您提供更多帮助。让我们找更有经验的人来做吧。
  • 对我来说已经足够了:)

标签: delphi delphi-7 tcollection tcollectionitem tpersistent


【解决方案1】:

您正在寻找的——亲爱的过去的我——是RegisterPropertyEditor 方法。

调用RegisterPropertyEditor关联属性编辑器类 由具有属性类型的 EditorClass 参数指定 由 PropertyType 参数指定。

在你的情况下,你需要一个 TDataFieldProperty 所以它会像:

RegisterPropertyEditor(TypeInfo(string), TColumn, 'FieldName', TDataFieldProperty);

【讨论】:

  • 仍然找不到“FieldName”属性编辑器的注册位置
  • 您所说的“'FieldName' 属性编辑器的注册位置是什么意思?
  • @jachguate - AFAIU 这意味着答案没有回答问题。
  • 这不能回答问题。问题询问属性编辑器在哪里注册。这个答案告诉 什么 注册可能是什么样子,但源代码中的任何地方都没有这样的行。
  • 在 Delphi 5 中,它在 dbreg 单元的第 473 行为 TColumn 注册:RegisterPropertyEditor(TypeInfo(string), TColumn, 'FieldName', TColumnDataFieldProperty);
猜你喜欢
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多