【问题标题】:Customizing the Format Settings on a TcxCustomDateEdit在 TcxCustomDateEdit 上自定义格式设置
【发布时间】:2011-07-07 11:42:45
【问题描述】:

我希望编写一个日期编辑控件,最好使用日期/时间选择器,该选择器将其格式设置存储在控件本身上,以便可以在运行时独立于其他控件进行定义。

我以 TcxCustomDateEdit 作为基础并重写了各种方法来处理输入和输出,但现在我遇到了弹出日历的问题,它使用 SysUtils 中的变量显示所有月份和日期名称。

我需要能够使用特定格式设置(包括月份和日期名称)而不是系统区域设置

有什么办法可以解决这个问题吗?

编辑

我从 TcxDateEdit 的弹出窗口中包含了下面的 2 张图像。

ShortDateFormat:顶部栏中的日期
ShortDayNames:日历中每一天的第一个字母
LongMonthNames:当前月份的箭头之间的月份名称,MonthListPopup 中的月份名称列表。

TimeSeparator:应该控制 TimeEdit 中的:,但没有。

这些都是 TFormatSettings 的一部分,我想在单独的控制级别控制这些。

【问题讨论】:

  • 请告诉我您想如何自定义 TcxCustomDateEdit 类。恐怕从您的描述中不清楚您想要实现什么。
  • @platon: 我希望能够指定控件使用的格式设置

标签: delphi custom-controls devexpress


【解决方案1】:

啊哈,我现在明白你想要达到的目标了。 Delphi 的 dateEdit 使用标准的 Delphi 的 ShortDateFormat 来格式化一个值。我将从覆盖 TcxCustomDateEditProperties.PrepareDisplayValue、TcxCustomDateEditProperties.InternalPrepareEditValue 和 TcxCustomDateEditProperties.ValidateDisplayValue 方法开始。

【讨论】:

  • 我已经做到了,而且效果很好,但是弹出日历仍然使用 sysutils 变量。
  • 您是指弹出窗口中的 timeEdit 吗?
  • No TcxPopupCalendar 和 TcxMonthListBox 都使用 LongMonthNames。
  • 能否请您发布屏幕截图显示您想要更改的内容?
【解决方案2】:

写了一个新的弹出日历

TMyPopupCalendar = class(TcxPopupCalendar);

还有一个新的列表框

TRegionalPopupListBox = class(TcxMonthListBox)

并且在日期编辑控件中覆盖了CreateCalendarGetCalendarClass

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 2013-07-30
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2012-09-28
    相关资源
    最近更新 更多