void wxDatePickerCtrl::SetRange(const wxDateTime& dt1, const wxDateTime& dt2) { SYSTEMTIME st[2]; DWORD flags = 0; if ( dt1.IsValid() ) { dt1.GetAsMSWSysTime(st + 0); flags |= GDTR_MIN; } if ( dt2.IsValid() ) { dt2.GetAsMSWSysTime(st + 1); flags |= GDTR_MAX; } if ( !DateTime_SetRange(GetHwnd(), flags, st) ) { wxLogDebug(wxT("DateTime_SetRange() failed")); return; } // Setting the range could have changed the current control value if the // old one wasn't inside the new range, so update it. m_date = MSWGetControlValue(); }
void wxDatePickerCtrl::SetRange(const wxDateTime& dt1, const wxDateTime& dt2) { SYSTEMTIME st[2]; DWORD flags = 0; if ( dt1.IsValid() ) { dt1.GetAsMSWSysTime(st + 0); flags |= GDTR_MIN; } if ( dt2.IsValid() ) { dt2.GetAsMSWSysTime(st + 1); flags |= GDTR_MAX; } if ( !DateTime_SetRange(GetHwnd(), flags, st) ) { wxLogDebug(wxT("DateTime_SetRange() failed")); } }
void wxDatePickerCtrl::SetValue(const wxDateTime& dt) { wxCHECK_RET( dt.IsValid() || HasFlag(wxDP_ALLOWNONE), wxT("this control requires a valid date") ); SYSTEMTIME st; if ( dt.IsValid() ) { // Don't try setting the date if it's out of range: calendar control // under XP (and presumably all the other pre-Vista Windows versions) // doesn't return false from DateTime_SetSystemtime() in this case but // doesn't actually change the date, so we can't update our m_date // unconditionally and would need to check whether it was changed // before doing it. It looks simpler to just check whether it's in // range here instead. // // If we ever drop support for XP we could rely on the return value of // DateTime_SetSystemtime() but this probably won't happen in near // future. wxDateTime dtStart, dtEnd; GetRange(&dtStart, &dtEnd); if ( (dtStart.IsValid() && dt < dtStart) || (dtEnd.IsValid() && dt > dtEnd) ) { // Fail silently, some existing code relies on SetValue() with an // out of range value simply doing nothing -- so don't. return; } dt.GetAsMSWSysTime(&st); } if ( !DateTime_SetSystemtime(GetHwnd(), dt.IsValid() ? GDT_VALID : GDT_NONE, &st) ) { // The only expected failure is when the date is out of range but we // already checked for this above. wxFAIL_MSG( wxT("Setting the calendar date unexpectedly failed.") ); // In any case, skip updating m_date below. return; } // we need to keep only the date part, times don't make sense for this // control (in particular, comparisons with other dates would fail) m_date = dt; if ( m_date.IsValid() ) m_date.ResetTime(); }
bool wxCalendarCtrl::SetDateRange(const wxDateTime& dt1, const wxDateTime& dt2) { SYSTEMTIME st[2]; DWORD flags = 0; if ( dt1.IsValid() ) { dt1.GetAsMSWSysTime(st + 0); flags |= GDTR_MIN; } if ( dt2.IsValid() ) { dt2.GetAsMSWSysTime(st + 1); flags |= GDTR_MAX; } if ( !MonthCal_SetRange(GetHwnd(), flags, st) ) { wxLogDebug(wxT("MonthCal_SetRange() failed")); } return flags != 0; }
bool wxCalendarCtrl::SetDate(const wxDateTime& dt) { wxCHECK_MSG( dt.IsValid(), false, "invalid date" ); SYSTEMTIME st; dt.GetAsMSWSysTime(&st); if ( !MonthCal_SetCurSel(GetHwnd(), &st) ) { wxLogDebug(wxT("DateTime_SetSystemtime() failed")); return false; } m_date = dt; return true; }
void wxDatePickerCtrl::SetValue(const wxDateTime& dt) { wxCHECK_RET( dt.IsValid() || HasFlag(wxDP_ALLOWNONE), wxT("this control requires a valid date") ); SYSTEMTIME st; if ( dt.IsValid() ) dt.GetAsMSWSysTime(&st); if ( !DateTime_SetSystemtime(GetHwnd(), dt.IsValid() ? GDT_VALID : GDT_NONE, &st) ) { wxLogDebug(wxT("DateTime_SetSystemtime() failed")); } // we need to keep only the date part, times don't make sense for this // control (in particular, comparisons with other dates would fail) m_date = dt; if ( m_date.IsValid() ) m_date.ResetTime(); }
void wxDateTimePickerCtrl::SetValue(const wxDateTime& dt) { wxCHECK_RET( dt.IsValid() || MSWAllowsNone(), wxT("this control requires a valid date") ); SYSTEMTIME st; if ( dt.IsValid() ) dt.GetAsMSWSysTime(&st); if ( !DateTime_SetSystemtime(GetHwnd(), dt.IsValid() ? GDT_VALID : GDT_NONE, &st) ) { // The only expected failure is when the date is out of range but we // already checked for this above. wxFAIL_MSG( wxT("Setting the calendar date unexpectedly failed.") ); // In any case, skip updating m_date below. return; } m_date = dt; }