让VC2010的PropertyGrid支持日期下拉选择
2011-05-13 00:27
986 查看
创建一个类CMFCPropertyGridDateTimeProperty,继承自CMFCPropertyGridProperty
/////////////////////////////////////.h////////////////////////////////////////
// CMFCPropertyGridDateTimeProperty object
//QQ:20794027
//Name:zhaogaojian
class CMFCPropertyGridDateTimeProperty : public CMFCPropertyGridProperty
{
DECLARE_DYNAMIC(CMFCPropertyGridDateTimeProperty)
// Construction
public:
CMFCPropertyGridDateTimeProperty(const CString& strName, const CString& dtDateTime, DWORD_PTR dwData = 0, LPCTSTR lpszDescr = NULL,BOOL isDate=TRUE);
virtual ~CMFCPropertyGridDateTimeProperty();
// Overrides
public:
virtual void OnClickButton(CPoint point);
// Attributes
protected:
BOOL m_bIsDate;
CString m_strDateTime;
};
// MyPropertyGridProperty.cpp : 实现文件
//
#include "stdafx.h"
#include "LCMeterSetCOM.h"
#include "MyPropertyGridProperty.h"
#include "MyDateDialog.h"
/////////////////////////////////////.cpp////////////////////////////////////////
// CMFCPropertyGridDateTimeProperty object
#define AFX_PROP_HAS_LIST 0x0001
#define AFX_PROP_HAS_BUTTON 0x0002
#define AFX_PROP_HAS_SPIN 0x0004
IMPLEMENT_DYNAMIC(CMFCPropertyGridDateTimeProperty, CMFCPropertyGridProperty)
CMFCPropertyGridDateTimeProperty::CMFCPropertyGridDateTimeProperty(const CString& strName, const CString& strDateTime, DWORD_PTR dwData, LPCTSTR lpszDescr,BOOL isDate) : CMFCPropertyGridProperty(strName, COleVariant(strDateTime), lpszDescr, dwData)
{
m_dwFlags = AFX_PROP_HAS_BUTTON;
AllowEdit(false);
m_bIsDate=isDate;
}
CMFCPropertyGridDateTimeProperty::~CMFCPropertyGridDateTimeProperty()
{
}
void CMFCPropertyGridDateTimeProperty::OnClickButton(CPoint /*point*/)
{
ASSERT_VALID(this);
ASSERT_VALID(m_pWndList);
ASSERT_VALID(m_pWndInPlace);
ASSERT(::IsWindow(m_pWndInPlace->GetSafeHwnd()));
m_bButtonIsDown = TRUE;
Redraw();
//CString
CString strDate;
COleDateTime m_dtDateTime;
m_dtDateTime = m_varValue.date;
BOOL bUpdate = FALSE;
CDateTimeCtrl m_dtCtrl;
CMyDateDialog dlg;
if (dlg.DoModal() == IDOK)
{
bUpdate = TRUE;
if(m_bIsDate)
strDate.Format("%04d-%02d-%02d",dlg.m_dtDatePicker.GetYear(),dlg.m_dtDatePicker.GetMonth(),dlg.m_dtDatePicker.GetDay());
else
strDate.Format("%02d:%02d:%02d",dlg.m_dtTimePicker.GetHour(),dlg.m_dtTimePicker.GetMinute(),dlg.m_dtTimePicker.GetSecond());
//strPath = dlg.GetPathName();
}
if (bUpdate)
{
if (m_pWndInPlace != NULL)
{
m_pWndInPlace->SetWindowText(strDate);
}
m_varValue = (LPCTSTR) strDate;
}
m_bButtonIsDown = FALSE;
Redraw();
if (m_pWndInPlace != NULL)
{
m_pWndInPlace->SetFocus();
}
else
{
m_pWndList->SetFocus();
}
}
CMyDateDialog 是一个继承自dialog的类,里边有两个日期控件,变量名分别为m_dtDatePicker,m_dtTimePicker
使用方法:
...
apGroup1->AddSubItem(new CMFCPropertyGridDateTimeProperty(_T("日期"), strDate, 71 ,"请选择日期",TRUE));
...
LRESULT CPropertiesViewBar::OnPropertyChanged (WPARAM wParam,LPARAM lParam)
{
CMFCPropertyGridProperty* pProp = (CMFCPropertyGridProperty*) lParam;
BOOL bResetMDIChild = FALSE;
CString str;
int iYear=0,iMonth=0,iDay=0,iHour=0,iMinute=0,iSecond=0;
int iData=(int) pProp->GetData ();
switch (iData)
{
当更新数据时,再将字符串转成COleDateTime;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Augusdi/archive/2010/12/13/6073214.aspx
/////////////////////////////////////.h////////////////////////////////////////
// CMFCPropertyGridDateTimeProperty object
//QQ:20794027
//Name:zhaogaojian
class CMFCPropertyGridDateTimeProperty : public CMFCPropertyGridProperty
{
DECLARE_DYNAMIC(CMFCPropertyGridDateTimeProperty)
// Construction
public:
CMFCPropertyGridDateTimeProperty(const CString& strName, const CString& dtDateTime, DWORD_PTR dwData = 0, LPCTSTR lpszDescr = NULL,BOOL isDate=TRUE);
virtual ~CMFCPropertyGridDateTimeProperty();
// Overrides
public:
virtual void OnClickButton(CPoint point);
// Attributes
protected:
BOOL m_bIsDate;
CString m_strDateTime;
};
// MyPropertyGridProperty.cpp : 实现文件
//
#include "stdafx.h"
#include "LCMeterSetCOM.h"
#include "MyPropertyGridProperty.h"
#include "MyDateDialog.h"
/////////////////////////////////////.cpp////////////////////////////////////////
// CMFCPropertyGridDateTimeProperty object
#define AFX_PROP_HAS_LIST 0x0001
#define AFX_PROP_HAS_BUTTON 0x0002
#define AFX_PROP_HAS_SPIN 0x0004
IMPLEMENT_DYNAMIC(CMFCPropertyGridDateTimeProperty, CMFCPropertyGridProperty)
CMFCPropertyGridDateTimeProperty::CMFCPropertyGridDateTimeProperty(const CString& strName, const CString& strDateTime, DWORD_PTR dwData, LPCTSTR lpszDescr,BOOL isDate) : CMFCPropertyGridProperty(strName, COleVariant(strDateTime), lpszDescr, dwData)
{
m_dwFlags = AFX_PROP_HAS_BUTTON;
AllowEdit(false);
m_bIsDate=isDate;
}
CMFCPropertyGridDateTimeProperty::~CMFCPropertyGridDateTimeProperty()
{
}
void CMFCPropertyGridDateTimeProperty::OnClickButton(CPoint /*point*/)
{
ASSERT_VALID(this);
ASSERT_VALID(m_pWndList);
ASSERT_VALID(m_pWndInPlace);
ASSERT(::IsWindow(m_pWndInPlace->GetSafeHwnd()));
m_bButtonIsDown = TRUE;
Redraw();
//CString
CString strDate;
COleDateTime m_dtDateTime;
m_dtDateTime = m_varValue.date;
BOOL bUpdate = FALSE;
CDateTimeCtrl m_dtCtrl;
CMyDateDialog dlg;
if (dlg.DoModal() == IDOK)
{
bUpdate = TRUE;
if(m_bIsDate)
strDate.Format("%04d-%02d-%02d",dlg.m_dtDatePicker.GetYear(),dlg.m_dtDatePicker.GetMonth(),dlg.m_dtDatePicker.GetDay());
else
strDate.Format("%02d:%02d:%02d",dlg.m_dtTimePicker.GetHour(),dlg.m_dtTimePicker.GetMinute(),dlg.m_dtTimePicker.GetSecond());
//strPath = dlg.GetPathName();
}
if (bUpdate)
{
if (m_pWndInPlace != NULL)
{
m_pWndInPlace->SetWindowText(strDate);
}
m_varValue = (LPCTSTR) strDate;
}
m_bButtonIsDown = FALSE;
Redraw();
if (m_pWndInPlace != NULL)
{
m_pWndInPlace->SetFocus();
}
else
{
m_pWndList->SetFocus();
}
}
CMyDateDialog 是一个继承自dialog的类,里边有两个日期控件,变量名分别为m_dtDatePicker,m_dtTimePicker
使用方法:
...
apGroup1->AddSubItem(new CMFCPropertyGridDateTimeProperty(_T("日期"), strDate, 71 ,"请选择日期",TRUE));
...
LRESULT CPropertiesViewBar::OnPropertyChanged (WPARAM wParam,LPARAM lParam)
{
CMFCPropertyGridProperty* pProp = (CMFCPropertyGridProperty*) lParam;
BOOL bResetMDIChild = FALSE;
CString str;
int iYear=0,iMonth=0,iDay=0,iHour=0,iMinute=0,iSecond=0;
int iData=(int) pProp->GetData ();
switch (iData)
{
当更新数据时,再将字符串转成COleDateTime;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Augusdi/archive/2010/12/13/6073214.aspx
相关文章推荐
- 让VC2010的PropertyGrid支持日期下拉选择
- 使用月历控件CMonthCalCtrl让VC2010的CMFCPropertyGridProperty支持日期选择
- 【QTP学习笔记 1 】下拉框数据随机选择,日期输入,如何获取动态的对话框
- 类库-----一些经常用到的对控件的处理1. 获取文本框中输入内容2.清除文本框内容3. 获取下拉列表框中选择内容,类型0为Text值,类型1为Value值4.DropDownList绑定日期
- 下拉框 选择日期
- ux.form.field.GridDate 支持快速选择日期的日期控件
- jQuery插件 - 下拉列表日期选择控件
- 一个简单的日期选择框(支持IE,FF,Opera)
- 模块:(日期选择)jquery、bootstrap实现日期下拉选择+bootstrap jquery UI自带动画的日期选择器
- 简洁JS 日历控件 支持日期和月份选择(转)
- VC2005中如何选择是否采用Unicode的支持
- angular-ui-select 支持搜索的 下拉选择框 的使用
- AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;
- JQuery datepicker实现日期组件下拉选择
- ISO/IEC C++中的所有基本类型,以及vc 2010支持的值域
- Eric的日期选择下拉列表小控件
- 打造完美SWT日期选择控件:(四)下拉列表的整体设计
- MY97日期选择控件支持日期CTRL多选
- NetAdvantage中的选择日期的控件,有时候无法弹出下拉日期,或者日期弹出的位置不正确
- VC++ 2010对C99的支持