zoukankan      html  css  js  c++  java
  • GridCtrl学习笔记(2)寻找自动更新表格的最新数据并把其显示到当前窗口的方法

    工程搭建好后,可以开始找方法了。

    1、首先,建立一个按钮,每按一次,就可更新非当前格子的内容,这个很容易实现:
    void CGridControlTest02Dlg::OnBnClickedFillbox()
    {
        // TODO: Add your control notification handler code here
                GV_ITEM Item; 
                Item.mask = GVIF_TEXT|GVIF_FORMAT;
                Item.row = 56;
                Item.col = 2;
                Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
                Item.strText.Format(_T("55"),2);
                m_pGrid.SetItem(&Item); 
                m_pGrid.Refresh();
                //CCellID cell(56,2);
     
                //m_pGrid.SetFocusCell(cell);//设置焦点的方法
    }
    2、接着,就一直找方法,直到我看到GridCtrl.h里的protect中这个函数(BOOL SetScrollPos32(int nBar, int nPos, BOOL bRedraw = TRUE);),然后看使用它的前后代码,发现可以调用它。
    但很可惜的是,它是protect,我把它改为public也是一样不能通过编译。
    后来,请教同事,发现,在改为public并且用实例化的方式使用它,则编译通过了。如下:
    int scrollPos = m_pGrid.GetScrollPos32(SB_VERT);
     
    3、然后,我就可以尝试使用我的方法试试了:先获取当前的pos位置,然后算出offset,让当前+offset,则可跳转到有内容更新的位置了:
                int scrollPos = m_pGrid.GetScrollPos32(SB_VERT);
                CCellID idTopLeft = m_pGrid.GetTopleftNonFixedCell();
                int yScroll = m_pGrid.GetRowHeight(idTopLeft.row)*(Item.row-1);
                m_pGrid.SetScrollPos32(SB_VERT, scrollPos + yScroll);
    4、编译后通过,并且此法可行。接下来要把此方法修复一下,因为现在有bug。
     
  • 相关阅读:
    CentOS6.9依赖包快速安装指南
    CentOS 6.5安装部署Zabbix 3.05指南
    Nginx最佳安装与优化
    Linux Bonding最优配置
    macOS下用命令行发邮件
    Linux iperf网络性能测试
    MTR网络诊断自动脚本实例
    nmon监控linux资源使用情况
    思科HSRP配置实例
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/ciuciu/p/4462785.html
Copyright © 2011-2022 走看看