gpt4 book ai didi

c++ - 如何隐藏TDateTimePicker中的 "Today"按钮?

转载 作者:行者123 更新时间:2023-11-28 05:34:36 26 4
gpt4 key购买 nike

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

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

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

我找到了一些允许使用其他语言格式化 Today 文本的解决方案,但没有一个适用于 C++。我曾尝试使用一些内置函数,例如高度和文本,但都没有成功。我通常不是使用此代码的人,因此我可能希望遗漏一些简单的东西。

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

最佳答案

要删除“今天”文本,您必须在 DTP 的子月日历上启用 MCS_NOTODAY 窗口样式。该样式自 Internet Explorer 3 以来就可用。

TDateTimePicker::OnDropDown事件中,可以使用DateTime_GetMonthCal()获取月历的 HWND 然后使用 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++ - 如何隐藏TDateTimePicker中的 "Today"按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com