0

私は現在、C++Builder 5 で構築されたレガシー プログラムに取り組んでいます。

私は、いくつかのTDateTimePickerコントロールがある領域に取り組んでいます。dtp 自体は正しく動作しますが、現在取り組んでいるローカリゼーションの問題により、ユーザーがクリックして今日の日付を自動的に選択できるピッカーの下部にある [今日] ボタンを削除しようとしています。

これに代わる方法は、フォーマットされた日付文字列を一番下から削除して、「Today MM/DD/YYYY」ではなく「Today」と表示することです。

今日のテキストを他の言語で書式設定できるソリューションをいくつか見つけましたが、C++ のソリューションはありません。高さやテキストなどの組み込み関数を使用してみましたが、うまくいきませんでした。私は通常、このコードで作業する人ではないので、簡単なことを見逃しているかもしれません。

編集: このプロジェクトの VM で Windows XP を使用しています。

4

1 に答える 1

1

「今日」のテキストを削除するにはMCS_NOTODAY、DTP の子月カレンダーでウィンドウ スタイルを有効にする必要があります。このスタイルは、Internet Explorer 3 以降で使用できます。

TDateTimePicker::OnDropDownイベントでは、 を使用して月のカレンダーDateTime_GetMonthCal()を取得し、を使用してスタイルを有効にすることができます。HWNDSetWindowLong/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);
于 2016-07-26T15:57:17.390 に答える