【问题标题】:TCollection PropertyEditor with editable Columns具有可编辑列的 TCollection PropertyEditor
【发布时间】:2011-01-17 22:30:03
【问题描述】:

对于我自己的 TCollection 后代,我想扩展集合属性编辑器。我想查看更多关于我的 TCollectionItem 的其他属性的列。我很幸运,因为这很容易。我唯一想做的就是重写这三个方法

TAttributeList = class(TOwnedCollection)
private
  ...
protected
  function GetAttrCount: Integer; override;
  function GetAttr(Index: Integer): string; override;
  function GetItemAttr(Index, ItemIndex: Integer): string; override;
public
  ...
end;

检索集合中某项的列数、列标题和列值。

现在我想编辑属性单元格。在这里停下来很有趣,我自己编写了一个完整的集合编辑器(也许作为 TCollectionEditor 在单元 ColnEdit.pas 中的副本或后代)?

我希望有一些更简单的东西,但我对构建复杂 TCollectionEditor 的示例感兴趣。

Ciao Heinz Z.

【问题讨论】:

  • 尝试使用 TCollection 执行此操作并更新现有编辑器可能会导致您发疯 :-) - 属性可能不是与属性的一对一关系。 - 这样做需要一个新的集合编辑器,没有内置任何东西。 - 关联的属性编辑器很可能必须绑定到集合编辑器
  • 你好罗伯特,“这样做需要一个新的集合编辑器,没有内置任何东西。”我认为这是事实。但不幸的是,我无法选择评论作为答案。

标签: delphi delphi-2010 propertyeditor tcollection townedcollection


【解决方案1】:

这里的目的是提供这些额外的列属性作为 TCollectionItem 本身的已发布属性。因此,当您选择项目时,它会被选择到对象检查器中,然后您可以在其中编辑和更改值。

只需创建 TCollectionItem 的后代并发布表示您希望可编辑的额外属性的属性。确保在构造 TCollection 后代时,指定要实例化的 TCollectionItem 类型。

【讨论】:

  • 艾伦您好,我已经按照您描述的方式实现了这些属性。但我想要一个更像是编辑这些属性的网格。目前我总是在键盘和鼠标之间切换(特别是当我想从对象检查器返回到集合编辑器时。
  • 在这种情况下,您需要实现自己的集合编辑器。提供的集合编辑器旨在尽可能通用,并与 Object Inspector 一起使用各种集合和项目。
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
相关资源
最近更新 更多