首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TDateTimePicker中隐藏“今天”按钮?

如何在TDateTimePicker中隐藏“今天”按钮?
EN

Stack Overflow用户
提问于 2016-07-26 22:51:34
回答 1查看 83关注 0票数 0

我目前正在开发一个用C++Builder 5构建的遗留程序。

我在一个我们有几个TDateTimePicker控件的地方工作。dtp本身工作正常,但由于我目前正在处理的本地化问题,我希望删除选取器底部的"Today“按钮,该按钮允许用户单击它来自动选择今天的日期。

另一种方法是从底部删除格式化的日期字符串,这样它就会显示"Today“而不是"Today MM/DD/YYYY”。

我已经找到了一些解决方案,可以用其他语言格式化今天的文本,但没有一个是针对C++的。我试过使用一些内置的函数,比如高度和文本,但都没有成功。我通常不是在这段代码中工作的人,所以我可能遗漏了一些简单的东西。

编辑:我在此项目的虚拟机中使用Windows XP。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-26 23:57:17

要删除"Today“文本,您必须在DTP的子月日历上启用MCS_NOTODAY窗口样式。这种风格从Internet Explorer3开始就可以使用了。

TDateTimePicker::OnDropDown事件中,您可以使用DateTime_GetMonthCal()获取月历的HWND,然后使用SetWindowLong/Ptr(GWL_STYLE)启用MCS_NOTODAY样式。

代码语言:javascript
复制
#include <commctrl.h>

void __fastcall TMyForm::DateTimePicker1DropDown(TObject *Sender)
{
    HWND hCalendar = DateTime_GetMonthCal(DateTimePicker1->Handle);
    LONG_PTR style = GetWindowLongPtr(hCalendar, GWL_STYLE);
    SetWindowLongPtr(hCalendar, GWL_STYLE, style | MCS_NOTODAY);
}

在Vista和更高版本上,您可以选择使用DateTime_SetMonthCalStyle()来启用MCS_NOTODAY样式。

代码语言:javascript
复制
DWORD style = DateTime_GetMonthCalStyle(DateTimePicker1->Handle);
DateTime_SetMonthCalStyle(DateTimePicker1->Handle, style | MCS_NOTODAY);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38593221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档