如何隐藏TDateTimePicker中的"Today"按钮?
How to hide the "Today" button in TDateTimePicker?
我目前正在开发一个用 C++Builder 5 构建的遗留程序。
我正在处理我们有几个 TDateTimePicker
控件的区域。 dtp 本身工作正常,但由于我目前正在处理的本地化问题,我希望删除选择器底部的 "Today" 按钮,让用户点击它自动 select今天的日期。
另一种方法是从底部删除格式化的日期字符串,这样它就显示 "Today" 而不是 "Today MM/DD/YYYY"。
我找到了一些允许使用其他语言格式化 Today 文本的解决方案,但 none 适用于 C++。我曾尝试使用一些内置函数,例如高度和文本,但都没有成功。我通常不是使用此代码的人,所以我可能希望遗漏一些简单的东西。
编辑:我在这个项目的 VM 中使用 Windows XP。
要删除 "Today" 文本,您必须在 DTP 的子月日历上启用 MCS_NOTODAY
window 样式。该样式从 Internet Explorer 3 开始可用。
在TDateTimePicker::OnDropDown
事件中,可以使用DateTime_GetMonthCal()
to get the HWND
of the month calendar and then use SetWindowLong/Ptr(GWL_STYLE)
启用MCS_NOTODAY
样式。
#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
样式。
DWORD style = DateTime_GetMonthCalStyle(DateTimePicker1->Handle);
DateTime_SetMonthCalStyle(DateTimePicker1->Handle, style | MCS_NOTODAY);
我目前正在开发一个用 C++Builder 5 构建的遗留程序。
我正在处理我们有几个 TDateTimePicker
控件的区域。 dtp 本身工作正常,但由于我目前正在处理的本地化问题,我希望删除选择器底部的 "Today" 按钮,让用户点击它自动 select今天的日期。
另一种方法是从底部删除格式化的日期字符串,这样它就显示 "Today" 而不是 "Today MM/DD/YYYY"。
我找到了一些允许使用其他语言格式化 Today 文本的解决方案,但 none 适用于 C++。我曾尝试使用一些内置函数,例如高度和文本,但都没有成功。我通常不是使用此代码的人,所以我可能希望遗漏一些简单的东西。
编辑:我在这个项目的 VM 中使用 Windows XP。
要删除 "Today" 文本,您必须在 DTP 的子月日历上启用 MCS_NOTODAY
window 样式。该样式从 Internet Explorer 3 开始可用。
在TDateTimePicker::OnDropDown
事件中,可以使用DateTime_GetMonthCal()
to get the HWND
of the month calendar and then use SetWindowLong/Ptr(GWL_STYLE)
启用MCS_NOTODAY
样式。
#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
样式。
DWORD style = DateTime_GetMonthCalStyle(DateTimePicker1->Handle);
DateTime_SetMonthCalStyle(DateTimePicker1->Handle, style | MCS_NOTODAY);