您的位置:首页 > 其它

MFC GridControl 控件使用(2)

2016-05-23 15:23 302 查看
由于原有的Gridcontrol 不是我想要的结果,我需要对它进行一些处理

添加OnGridInit()函数:

void CSAMPLEDlg::GridCtrlInit()

{
 
m_pGrid.SetRowCount(9); //初始为10行/ 设定总共的行数
m_pGrid.SetColumnCount(13); //初始化为11列 / 设定总共的列数
m_pGrid.SetFixedRowCount(1); //表头为一行
m_pGrid.SetFixedColumnCount(1); //表头为一列

 
for (int row = 0; row < m_pGrid.GetRowCount(); row++)     //行
for (int col = 0; col < m_pGrid.GetColumnCount(); col++)   //列
{
//设置表格显示属性
GV_ITEM Item;
Item.mask = GVIF_TEXT | GVIF_FORMAT;
Item.row = row;
Item.col = col;
m_pGrid.SetRowHeight(0, 30); //设置0列高
m_pGrid.SetRowHeight(row,72); //设置各行高          
m_pGrid.SetColumnWidth(0, 30); //设置0列宽 
m_pGrid.SetColumnWidth(col, 86); //设置各列宽
//本想用循环来设置,但是直接设置行头更方便
m_pGrid.SetItemText(1, 0, _T("A"));
// SetItemText 用来设定某行某列的具体文本数值
m_pGrid.SetItemText(2, 0, _T("B"));
m_pGrid.SetItemText(3, 0, _T("C"));
m_pGrid.SetItemText(4, 0, _T("D"));
m_pGrid.SetItemText(5, 0, _T("E"));
m_pGrid.SetItemText(6, 0, _T("F"));
m_pGrid.SetItemText(7, 0, _T("G"));
m_pGrid.SetItemText(8, 0, _T("H"));

if (row == 0 && col == 0) //第(0,0)格
{
Item.nFormat = DT_CENTER | DT_WORDBREAK;
Item.strText.Format(_T(" "), col);
}

else if (row < 1) //设置0行表头显示 
{
Item.nFormat = DT_CENTER | DT_VCENTER
| DT_SINGLELINE | DT_END_ELLIPSIS
| DT_NOPREFIX | DT_WORDBREAK;
Item.strText.Format(_T(" %d"), col);
}
 
  else
{//:居中显示  垂直居中显示  单行显示  显示的字符串,结束的字符串的范围不在矩形内会被截断并以省略号标
Item.nFormat = DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS;
Item.strText.Format(_T(""), row);
}// DT_WORDBREAK:当一行中的字符将会延伸到由lpRect指定的矩形的边框时,此行自动地在字之间换行
m_pGrid.SetItem(&Item);
}

}

我想要对GridControl进行一些处理

1.单击item对其设置想要的字符串,但是屏蔽双击效果

2.点击行头或者列头 可以设置一整行或者一阵列内容

3.屏蔽掉鼠标移动到item上 的提示效果

4.点击item上面的内容 序号依次增加效果

5.单击按键 设置整个item,也可以全部清除

6.保存到数据库中

 添加函数:

//单击item  设置内容

void CSAMPLEDlg::OnGridClick(NMHDR *pNotifyStruct, LRESULT* /*pResult*/);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: