问题标签 [tdatetimepicker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2773 浏览

delphi - 为什么 TDateTimePicker.Checked 在 Windows 7 上总是返回 True?

我有一个应用程序,在 Delphi 2007 中构建,TDateTimePicker表单上有一个。此日期时间选择器的ShowCheckbox属性设置为True,它在日期或时间旁边显示一个复选框,每当用户选择日期或日期或时间由代码更改时,就会自动选中该复选框。此复选框的状态也可以由用户手动控制,其状态可以由Checked属性确定。

以下代码显示了如何确定事件中此复选框的状态OnChange

上面的代码在 Windows XP 上按预期工作,但在 Windows 7 上,Checked无论该复选框的实际状态如何,该属性始终返回 True。

为什么Checked即使未选中复选框,属性也总是返回 True?有没有办法以某种方式解决或解决这个问题?

PS 我的应用程序使用 Windows 主题

0 投票
1 回答
1328 浏览

delphi - 如何更改 onChangeEvent 中的日期?

我需要对日期更改在 TDateTimePicker.OnChangeEvent 做出反应。显示对话框,如“未保存的更改将丢失”,带有确定、取消按钮。如果用户按下取消按钮,我想重置原始日期。

不幸的是,我无法更改该事件的日期。更改被忽略。

更详细的说明:

  1. 用户更改 DateTimePicker 中的日期(通过键盘)或打开日历并选择一个日期
  2. OnChange 事件被触发(日历可能仍然打开)
  3. 我显示 MessageDialog,如果用户按“取消”我想恢复日期。例如。关闭日历并恢复日期。
0 投票
1 回答
2602 浏览

delphi - Delphi TDateTime 与 TMonthCalendar 的大胆日子

我目前正在使用 Delphi (Professional, Version 7.0; Build 4.453) 创建一个程序。

最初,我想在 TDateTimePicker 下拉日历中加粗一些日期;但我很快发现我做不到 - 所以我试图在 TDateTimePicker 下拉日历(简单,对吗?)

但不是那么快:不知何故,TDateTimePicker 下拉日历总是显示在我的 TMonthCalendar 的顶部。我想让 TMonthCalendar 显示在顶部。

这是我认为我可以做的:

  1. 将 TMonthCalendar 定位在 TDateTimePicker 下(通常会显示其下拉菜单)
  2. 在 TDateTimePicker 的 OnDropDown 事件中显示 TMonthCalendar
  3. 在 TDateTimePicker 的 OnCloseUp 事件中隐藏 TMonthCalendar

这是正在发生的事情:

  1. 当我单击 TDateTimePicker 上的下拉三角形时,TMonthCalendar 变得可见(耶!)
  2. 但 TDateTimePicker 下拉日历始终优先(TMonthCalendar 始终位于下拉列表下方)
  3. 因此,在我在 TDateTimePicker 下拉列表中选择日期之前,我无法对 TMonthCalendar 执行任何操作(我什至看不到粗体日期,因为 TMonthCalendar 在下方)。

这是我尝试过的:

  • TDateTimePicker 的 OnDropDown 事件上的 TMonthCalendar.Show(这应该将 Show-ed 的内容带到顶部)。但这无济于事。
  • 在 TDateTimePicker 的 OnDropDown 上执行 DateMode: dmDropDown -> DateMode: dmUpDown(从而禁用下拉日历)。但这有问题,因为单击 MonthCalendar 上的任何位置(包括顶部任一侧的更改月份按钮)将使 MonthCalendar 变得不可见(我在 MonthCalendarOnClick 中执行“如果 MonthCalendar.Visible 然后可见:= false”)

我知道解决方案可能很简单,但我想不出办法来做到这一点。到目前为止,我提出的几个想法都不起作用:(所以如果你能想到一种方法来做我想做的事,请帮助我。

先感谢您!:)

0 投票
2 回答
1903 浏览

delphi - Delphi TDateTimePicker 问题,“无法设置最小/最大范围”

我的一个应用程序的一些用户遇到了一个奇怪的问题,在启动时他们收到了一个异常,datitimepickers 的预定最小/最大日期设置为 1950 年 1 月 1 日至 2050 年 12 月 31 日。

应用程序抛出的默认错误消息是

“读取 time1.Max 时出错:无法设置日历最小/最大范围。”

在嵌入调试器(madshi 的 madExcept)后,我在报告中看到:

“读取 time1.MaxDate 时出错:'23:59:59' 不是有效的日期和时间。”

表单上的对象具有以下属性:

知道可能是什么问题吗?

崩溃数据:

主线程($2b08):

0 投票
1 回答
572 浏览

delphi - 将焦点返回到 Delphi TDateTimePicker 控件的第一部分

在焦点离开 TDateTimerPicker 控件并稍后返回到它之后,控件会记住哪个部分(日、月或年)具有焦点。焦点回到那部分。

如何强制焦点回到控件的第一个 per ?

0 投票
1 回答
187 浏览

delphi - TDateTimePicker 缺少 DELPHI XE2 的 OnDblClick 事件

如果这个问题听起来有些愚蠢,我深表歉意,但是对于 XE2,我可以看到 TDateTimePicker 的 OnDblClick 事件似乎从事件列表中丢失。真的是这样吗?这是我如何进行的:

  • 我开始一个新的 VCL 应用程序
  • 在默认表单上实例化一个 TDateTimePicker

从TDateTimePicker的事件列表中可以看出OnDblClick事件是缺失的。另一方面,使用 Delphi 7,它工作正常,我可以看到 OnDblClick 事件。到目前为止,我还没有找到任何相关信息。

是否需要做一些额外的设置,或者我只是在这里遗漏了一些明显的步骤?

0 投票
2 回答
1465 浏览

delphi - 在 TDateTimePicker 中将无效日期显示为禁用

我正在使用 TDateTimePicker 来允许用户选择一天(手动或通过单击按钮前进或后退一天)。然后,用户将看到该特定日期的日志条目。

该控件效果很好,但我想将用户限制在 [OLDEST-DAY-IN-LOG] 和 [TODAY] 之间,因为这些是有数据的日期限制。

我已经在 TDateTimePicker 上设置了 MinDate 和 MaxDate 并且效果很好。选择允许范围之外的日期不会执行任何操作。

我的问题是是否可以将无效日期绘制为灰色。在附图中,选择的日期是 01/04,今天是 02/04。我希望看到 03/04(及以后)被禁用。理想情况下,就像您在图像中看到的“30”和“31”一样,它们是三月的最后几天。

这可能吗?如果相关,请使用 Delphi 7。

Delphi中的TDateTimePicker控件

0 投票
1 回答
484 浏览

delphi - TDateTimePicker 使用 VCL Styles Hooks 看起来很难看

在 IDE 中,TDateTimePicker 看起来相当不错,并且它有一个日历图标。但是,使用 VCL Style Hooks,没有图标,下拉按钮看起来很丑。请参阅 VCL Hooks 演示应用程序。

在 IDE 中,它看起来像:

在此处输入图像描述

使用 VCL 样式,它看起来像:

在此处输入图像描述

我该怎么做才能使 Styles 看起来合理?

0 投票
2 回答
2391 浏览

delphi - TDateTimePicker MaxDate - 不允许将控件设置为当前日期

我已将标准 VCL TDateTimePicker-MaxDate属性设置为Date- 例如

但是,有一个问题。如果我现在将日期设置为当前日期:

它不会接受它。控件只是停留在设计时设置的日期。我可以通过将 MaxDate 设置为Date + 1然后设置Date属性工作正常并显示今天的日期来解决它,但随后用户可以选择明天的日期。我也尝试设置MaxDate为,Date + 0.99999999但这也无济于事。

我使用 Delphi 2010 和 C++Builder 2010(如果这是其中任何一个的错误)。

任何想法如何防止选择今天之后的任何日期并将控制日期设置为今天的日期?

更改日期会导致 - “无法设置日历日期或时间”。

更新:

我设法使其工作如下:

  1. 在 TDateTimePicker 中打开下拉菜单(在运行时)并有意选择今天的日期(单击已选择的今天日期)
  2. 之后选择任何过去的日期
  3. 单击具有重置日期代码的按钮,然后它就可以工作了。

我的解决方案可能是在关闭表单之前使用范围检查,因为它似乎MaxDate没用,至少对于这个版本的 Delphi。

0 投票
1 回答
657 浏览

delphi - TDatetimePicker 格式显示错误

如果我设置 TDateTimePicker 组件(Delphi XE10)的属性“格式”,例如。ddd d/m/yyyy 然后显示 Tue 14/ 47 /2016 !! 日期 31/12/2016 为 31/ 0 /2016 !请问这是怎么回事?