【问题标题】:Date/Time Picker as Property Editor in a TCollectionItem descendant日期/时间选择器作为 TCollectionItem 后代中的属性编辑器
【发布时间】:2012-12-05 21:17:06
【问题描述】:

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

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

我找到了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


【解决方案1】:

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

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

你说:

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

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

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

【讨论】:

  • 谢谢,我自己做了一个,因为这是一个单独的问题,我自己在这里回答了:stackoverflow.com/questions/13944810/…
  • 不,我需要帮助修复我的互联网以防随机掉线,但那完全不同。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2018-11-23
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 2015-06-24
相关资源
最近更新 更多