MSHFLEXGRID控件调用RemoveItem()方法后再调用AddItem方法,AddItem方法不起作用,运行时在MSHFLEXGRID上看不见新加的项。
如:
m_gridTask.SetRow(1);
m_gridTask.SetCol(1);
m_gridTask.SetText("a1");
m_gridTask.SetRow(2);
m_gridTask.SetCol(1);
m_gridTask.SetText("b2"); m_gridTask.RemoveItem(1); m_gridTask.AddItem("aa",COleVariant(long(2L))); //这句话没用,不知道为什么。但是如果最后调用m_gridTask.GetRows(),得出的结果是正确地,就是在界面上看不见。希望朋友们能指点一二。
如:
m_gridTask.SetRow(1);
m_gridTask.SetCol(1);
m_gridTask.SetText("a1");
m_gridTask.SetRow(2);
m_gridTask.SetCol(1);
m_gridTask.SetText("b2"); m_gridTask.RemoveItem(1); m_gridTask.AddItem("aa",COleVariant(long(2L))); //这句话没用,不知道为什么。但是如果最后调用m_gridTask.GetRows(),得出的结果是正确地,就是在界面上看不见。希望朋友们能指点一二。
地址:
http://www.codeproject.com/miscctrl/gridctrl.asp
m_gridTask.SetFixedCols(1);
m_gridTask.SetCols(0, 2);
m_gridTask.SetSelectionMode(0);
m_gridTask.SetRows(3);
m_gridTask.SetRow(1);
m_gridTask.SetCol(1);
m_gridTask.SetText("a1");
m_gridTask.SetRow(2);
m_gridTask.SetCol(1);
m_gridTask.SetText("b2"); void CDdDlg::OnButton1()
{
m_gridTask.AddItem("aa",COleVariant(m_gridTask.GetRow()));
}void CDdDlg::OnButton2()
{
m_gridTask.RemoveItem(m_gridTask.GetRow());//can not remove last non fixed row}前面的回复没有测试过,
can not use AddItem on fixed row
can not remove last non fixed row
索引是从0开始的,包括fixed rows/cols
m_gridTask.SetFixedCols(1);
m_gridTask.SetCols(0, 2);
m_gridTask.SetSelectionMode(0);
m_gridTask.SetRows(3);
m_gridTask.SetRow(1);
m_gridTask.SetCol(1);
m_gridTask.SetText("a1");
m_gridTask.SetRow(2);
m_gridTask.SetCol(1);
m_gridTask.SetText("b2"); void CDdDlg::OnButton1()
{
CString str; str.Format("%d", m_gridTask.GetRows());
AfxMessageBox(str);
m_gridTask.AddItem("aa",COleVariant(long(2L)));
str.Format("%d", m_gridTask.GetRows());
AfxMessageBox(str);
m_gridTask.RemoveItem(2);
str.Format("%d", m_gridTask.GetRows());
AfxMessageBox(str);
}
我这段代码执行一次,ok,没问题,可以看到新加了一行又删除了,可是执行第二次,就看不见添加的行了,大家说是不是很奇怪。
如果我有选择控件的权利,我是不会选择这个控件的,真麻烦。
还是要感谢各位朋友。