2016-07-26 16 views
0

Ich arbeite derzeit an einem Legacy-Programm in C++ Builder 5.Wie die Schaltfläche "Heute" in TDateTimePicker ausblenden?

Ich arbeite an einem Bereich, wo wir ein paar TDateTimePicker Kontrollen haben. Das dtp selbst funktioniert korrekt, aber aufgrund eines Lokalisierungsproblems, an dem ich gerade arbeite, möchte ich die Schaltfläche "Heute" am unteren Ende der Auswahl entfernen, damit der Benutzer darauf klicken kann, um das heutige Datum automatisch auszuwählen.

Eine Alternative dazu wäre, einfach die formatierte Datumszeichenkette von unten zu entfernen, so dass sie "Today" statt "Today MM/DD/YYYY" lautet.

Ich habe ein paar Lösungen gefunden, die Formatierung des Heute-Textes in anderen Sprachen ermöglichen, aber keine für C++. Ich habe versucht, einige der eingebauten Funktionen wie Höhe und Text zu verwenden, aber waren nicht erfolgreich. Ich bin normalerweise nicht derjenige, der in diesem Code arbeitet, so dass ich hoffentlich etwas Einfaches vermisse.

EDIT: Ich verwende Windows XP in einer VM für dieses Projekt.

Antwort

1

Um den Text "Heute" zu entfernen, müssen Sie das Fensterformat MCS_NOTODAY im DTP-Kalender für untergeordnete Monate aktivieren. Dieser Stil hat sich seit Internet Explorer 3.

Im TDateTimePicker::OnDropDown Veranstaltung zur Verfügung, Sie DateTime_GetMonthCal() können die HWND des Monats Kalender bekommen und dann SetWindowLong/Ptr(GWL_STYLE) verwenden, um die MCS_NOTODAY Stil zu ermöglichen.

#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); 
} 

Auf Vista und höher können Sie alternativ DateTime_SetMonthCalStyle() verwenden, um den MCS_NOTODAY Stil zu ermöglichen.

DWORD style = DateTime_GetMonthCalStyle(DateTimePicker1->Handle); 
DateTime_SetMonthCalStyle(DateTimePicker1->Handle, style | MCS_NOTODAY); 
+0

Funktioniert das in XP? Der Link listet Vista/2008 für Mindestanforderungen auf. Könnten Sie ein Beispiel geben? – wgallon

Verwandte Themen