QQ登录

只需一步,快速开始

上位机MFC实现多功能网格报表

[ 复制链接 ]
效果演示

上位机MFC实现多功能网格报表

上位机MFC实现多功能网格报表

当前例程实现功能丰富的列表框或网格报表功能,效果如上图。

包括下列特征:
用SHIFT、CONTROL键和鼠标选择单元格。
行和列重新定位。
双击分隔线可以自动改变行和列的大小。
任意数目的行和列。
单个单元可以有分离的文本和背景颜色。
单个单元可以有分别的字体。
单个单元可以标志为Read-Only。
OLE拖放。
Ctrl-C、Ctrl-X和Ctrl-V执行剪接板拷贝、剪切和粘贴,用Ctrl-A执行Select All。
在位编辑单元内容。如果单元具有输入焦点,在字符键被按下时,就可以在该单元中开始编辑;箭头键允许你在单元中的字符之间移动。
支持Microsoft intellimouse。
网格线可选。
单元格中可以有图像。
完全打印支持,不仅适合于文档/视窗模型,而且适合于对话框程序。
可选的列表模式,包括整行选择、点击头进行列排序。
多个虚拟函数允许控件扩展非常容易。
UNICODE支持。
工具提示。

可以下载运行例程,在界面上点击控件来查看效果。
下载地址:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:GRID_CTRL_DEMO.rar 
文件大小:144.45 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


另外如果想要实现表格项有下拉功能,可以下载参考下面例程。
例程是在前面例程源码基础上实现的。
它是将网格的编辑控件替换为下面的组合框控件,参见下图。
为了实现这一点,从CGridCtrl派生出CComboGridCtrl,并重载CGridCtrl::CreateInPlaceEditControl。

上位机MFC实现下拉网格报表

上位机MFC实现下拉网格报表

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:GRID_CTRL_COMBO.rar 
文件大小:122.47 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


上面例程是基于对话工程使用了。如果想在基于单文档工程中使用,可以参考下面例程。
实现过程:
在视类中声明一个CGridCtrl*变量:
CGridCtrl* m_pGrid;
初始化该变量为NULL:
CMyView::CMyView
{
    m_pGrid = NULL;
}
在CView的OnInitialUpdate中创建一个新的CGridCtrl对象:
CMyView::OnInitialUpdate
{
    CView::OnInitialUpdate();

    if (m_pGrid == NULL)                    // Have we already done this bit?
    {
        m_pGridCtrl = new CGridCtrl;        // Create the Gridctrl object
        if (!m_pGridCtrl) return;

        CRect rect;                         // Create the Gridctrl window
        GetClientRect(rect);
        m_pGridCtrl->Create(rect, this, 100);

        m_pGridCtrl->SetRowCount(50);        // fill it up with stuff
        m_pGridCtrl->SetColumnCount(10);

        // ... etc
    }
}

我们希望网格占据整个视的客户区域,这样,需要添加WM_SIZE消息处理函数:
CMyView::OnSize(UINT nType, int cx, int cy)
{
    CView::OnSize(nType, cx, cy);

    if (m_pGrid->GetSafeHwnd())     // Have the grid object and window been created yet?
    {
        CRect rect;
        GetClientRect(rect);        // Get the size of the view's client area
        m_pGrid->MoveWindow(rect);  // Resize the grid to take up that space.
    }
}

在析构函数中删除该控件:
CMyView::~CMyView
{
    if (m_pGrid)
        delete m_pGrid;
}
重载OnCmdMsg函数:
BOOL CMyView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
    if (m_pGrid && IsWindow(m_pGrid->m_hWnd))
        if (m_pGrid->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
            return TRUE;

        return CView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
  
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:GRID_CTRL_VIEW.rar 
文件大小:137.73 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我





回复

使用道具 举报

快速回复 返回列表 客服中心 搜索