【发布时间】:2012-12-05 21:17:06
【问题描述】:
我正在编写一个需要日期、时间和日期/时间类型属性的组件。我希望这些属性在对象检查器中可见,并可选择使用弹出属性编辑器。
我已尝试将 TDate 作为已发布属性,这为我提供了仅 Date 所需的结果。但是,TTime 和 TDateTime 我需要相同的东西,但它们没有属性编辑器,实际上它甚至也不接受我在其中输入的任何值。
我找到了TDateTimeProperty,它可以用作属性编辑器,至少我理解。我在注册这个组件时已经完成了必要的实现。我需要应用的这个属性实际上是TCollectionItem 的后代,不一定是组件的一部分,而是在其中。
这就是我注册它的方式...
RegisterComponents('My Page', [TMyComponent]);
RegisterPropertyEditor(TypeInfo(TDateTime), TMyCollectionItem, 'MyPropName', TDateTimeProperty);
虽然可以编译,但是当我安装它时,这个属性上没有属性编辑器。我尝试使用我的组件的类名代替 TMyCollectionItem 但同样的问题。
我在这里做错了什么来显示这个属性编辑器?
【问题讨论】:
-
如果您在对象检查器中看到您的 TDateTime 值作为日期/时间字符串,实际上,属性编辑器正在工作。
-
它的行为与没有它的行为相同,但这不是我想要的。这应该是一个实际的日期/时间选择器还是只是一种特殊格式?
-
你在哪里读到它会显示一个 TDateTimePicker?只需查看 ToolsAPI\DesignEditors.pas 单元中的 TDateTimeProperty 实现!由于 TDateTime 实际上是一个双精度数字,如果您的属性显示并接受日期/时间格式的字符串,则属性编辑器正在工作。
-
我只是期待一些与我得到的不同的东西,所以它可以正常工作,但不是我非常希望的那样。
-
注意:我已经在这里回答了我的问题:stackoverflow.com/questions/13944810/…
标签: delphi datetime custom-component propertyeditor tcollection