【问题标题】:How should I do a date and time range selection in my Delphi application?我应该如何在我的 Delphi 应用程序中选择日期和时间范围?
【发布时间】:2012-03-08 06:17:45
【问题描述】:

我希望用户能够指定诸如“星期二,从上午 10 点到上午 11 点”之类的内容。

我可以使用一个复杂的控件来做到这一点,还是使用 3 个单独的简单控件(例如组合框,一个用于一天,一个用于开始/停止时间)会更好?

【问题讨论】:

  • 我赌 3 个 TDateTimePickers 和 *Span() 函数...
  • 编辑删除了“帮我找到一个组件”(离题)短语。

标签: delphi vcl


【解决方案1】:

使用 3 个组合框会更好吗,一个用于一天,一个用于开始/停止时间?

选择不需要自然语言处理的任何解决方案。它不那么“酷”,可能看起来有点过时,但我敢打赌它对用户来说更容易,因为他们可以用鼠标完成所有选择,并且总是知道他们得到了他们想要的东西。自然语言很难,人们可能会拼写错误,输入不可能的数据或混淆数据。如果他们输入这样的内容,你会怎么做:

"Marţi, de la 22 la 21"

(故意用非英语书写,以 24 小时格式倒转小时!)。甚至不要考虑让非英语为母语的人用英语写日期,这是一种折磨。

换句话说,除非您有 Google 处理多种语言的自然语言的能力,否则请选择简单的多组合框设置,并为每个片段配备适当的编辑器:一个用于日期,两个用于时间。

【讨论】:

  • +1。这就是Microsoft Outlook 的做法。
  • 确保将月份设为非数字,并将年份写成完整的 4 位数字,因为这常常会导致混淆。 01/02/03 可能意味着很多事情,这取决于你问谁。 2001 年 2 月 3 日没有这个问题。
  • 我个人认为Windows应用程序应该使用用户在控制面板中指定的格式设置,Pieter。 ShortDateFormat 和 LongDateFormat 应该取决于您的用户,而不是您的开发人员。在一些科学应用程序中,我将所有内容强制为 ISO 格式,但我的应用程序“强制 ISO 日期”配置中通常有一个复选框,当它关闭时,我使用本机格式。
  • @PieterB,我认为 Mawg 的想法是让用户以自然的方式编写时间范围信息;强迫他们使用严格的时间格式来轻松解析听起来并不友好!
【解决方案2】:

JEDI VCL 有很多选项。

如果您希望能够在特定日期执行类似 Google 日历的操作,您可以在其中选择从视觉上从上午 9 点到 11 点的范围,您可以使用 JvTimeFramework(个人组织者)组件。对于时间从特定范围到另一个特定范围的单日视图,TJvTFDays 组件是理想的:

您点击想要开始的时间,就像 Google 日历一样。然后你输入“Lunch with dave”并回车,然后你抓住方块的底部并上下拖动它来固定持续时间,或者上下拖动方块的顶部来改变开始时间。如果你双击它,你可以直接使用一个对话框输入——屏幕截图中显示的添加约会对话框是用户只有一个选项。他们可以在没有它的情况下工作,只需直接输入日间计时器页面控件即可。

否则,如果你想坚持文本输入,我会结合几个控件,包括一个 JvDateTimePicker。

查看上述程序的 JVCL 示例文件夹中的 examples\JvTimeFrameWork\PhotoOp 演示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多