【问题标题】:How do I set the current time in Embarcadero's DateTimePicker?如何在 Embarcadero 的 DateTimePicker 中设置当前时间?
【发布时间】:2019-07-31 01:24:34
【问题描述】:

我正在使用 Embarcadero 的 C++Builder 10.2 和 TDateTimePicker 控件。每次创建此表单时,我一直在尝试找到一种方法将选择器的日期设置为今天的日期。到目前为止,我一直没有成功。如果我尝试使用DateTime.Now 给出的示例,错误消息显示为"undefined symbol DateTime"。我的代码在TForm3::FormCreate(TObject *Sender) 事件中,因为我只在创建此表单时才需要此信息。

当我输入DateTimePicker1-> 时,会出现一个下拉框,其中包含所有可用的功能、运算符等,但它们似乎都无法获取今天的日期并将其放入控件的格式中.

如果有人能帮助我解决这个问题,我们将不胜感激。

【问题讨论】:

    标签: c++ c++builder-10.2-tokyo tdatetimepicker


    【解决方案1】:

    在窗体的构造函数中(不要在 C++ 中使用TForm::OnCreate 事件!),您可以将System::Sysutils::Date() 函数或System::TDateTime::CurrentDate() 类方法的返回值分配给TDateTimePicker::Date 属性:

    #include <System.SysUtils.hpp>
    
    __fastcall TForm3::TForm3(TComponent *Owner)
        : TForm(Owner)
    {
        DateTimePicker1->Date = System::Sysutils::Date();
        // or:
        // DateTimePicker1->Date = System::TDateTime::CurrentDate();
    }
    

    Embarcadero 的 DateUtils (C++) 示例清楚地证明了这一点,该示例链接到 TDateTimePicker 文档中。

    我不知道您指的是哪个示例,但是 C++Builder(或 Delphi)中没有 DateTime 类型,这就是您收到编译器错误的原因。正确的类型名称是 TDateTime,但 Now() 不是 TDateTime 类的方法,而是 System::Sysutils 命名空间中的独立函数:

    DateTimePicker1->DateTime = System::Sysutils::Now();
    

    【讨论】:

    • 谢谢!我想知道为什么我不应该使用 OnCreate 事件。
    • @user427921 OnCreate/OnDestroy 是可以在 C++ 中引入非法行为的 Delphi 习语。改用构造函数/析构函数
    猜你喜欢
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多