2016-07-26 12 views
0

我目前正在使用C++ Builder 5構建的遺留程序。如何隱藏TDateTimePicker中的「今日」按鈕?

我正在研究一個我們有幾個TDateTimePicker控件的區域。 dtp本身工作正常,但由於我目前正在處理本地化問題,我正在尋找刪除選擇器底部的「今日」按鈕,該按鈕允許用戶點擊它以自動選擇今天的日期。

另一種方法是從底部刪除格式化的日期字符串,以便它表示「Today」而不是「Today MM/DD/YYYY」。

我發現了一些解決方案,可以格式化其他語言的Today文本,但C++沒有。我嘗試過使用一些內置函數,比如高度和文本,但都不成功。我通常不是這個代碼工作的人,所以我可能希望錯過簡單的東西。

編輯:我在這個項目的虛擬機使用Windows XP。

回答

1

要刪除「今日」文本,您必須在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); 
+0

這是否在XP下工作?該鏈接列出了Vista/2008的最低要求。你能提供一個例子嗎? – wgallon