1

我正在编写一个需要日期、时间和日期/时间类型属性的组件。我希望这些属性在对象检查器中可见,并可以选择使用弹出属性编辑器。

我已尝试TDate将其作为已发布的属性,这为我提供了仅 Date 所需的结果。但是我需要同样的东西TTimeTDateTime但它们没有属性编辑器,实际上它甚至不接受我在那里输入的任何值。

我发现TDateTimePropertywhich 可以用作属性编辑器,或者无论如何我都理解。我在注册这个组件时已经完成了必要的实现。我需要应用它的这个属性实际上是一个TCollectionItem后代,不一定是组件的一部分,而是在其中。

我就是这样注册的...

RegisterComponents('My Page', [TMyComponent]);
RegisterPropertyEditor(TypeInfo(TDateTime), TMyCollectionItem, 'MyPropName', TDateTimeProperty);

虽然这可以编译,但当我安装它时,这个属性上没有属性编辑器。我尝试使用我的组件的类名来代替TMyCollectionItem相同的问题。

我在这里做错了什么来显示这个属性编辑器?

4

1 回答 1

2

您无需为TDateTimeTDate和注册内置属性编辑器TTime。他们已经注册了。这就是为什么您尝试注册它们没有影响的原因。

这些类型的内置属性编辑器只是在底层浮点值和字符串表示之间进行转换。他们没有实现日期时间选择器或类似的东西。

你说:

但是我需要 TTime 和 TDateTime 相同的东西,但它们没有属性编辑器,实际上它甚至不接受我在那里输入的任何值。

这实际上是不正确的。它们确实带有属性编辑器。它们与您在问题中命名的内置属性编辑器相同。他们确实接受价值观。他们不接受您提供的值,因为您提供了无效值。

如果您想注册一个提供可视日期时间选择器的属性编辑器,那么您必须自己编写属性编辑器。

于 2012-12-18T16:48:17.533 回答