定义说明
资源
IDC_CHECK .bmp类型的勾选的图片资源ID
IDC_FOLDER .ico类型的文件夹图片资源ID
IDC_NODE .ico类型的节点图片资源ID
IDC_PICTURE_AREA MFC的picture控件ID,该区域用于创建CBCGPGridCtrl
控件相关
定义列号,方便后期修改
enum{
FIRST_CHECK,
SECOND_ORINARY,
THIRD_BUTTON,
FOURTH_COMBBOX,
FIVETH_PROGRESS_BAR
}
对话框中定义变量
CBCGPGridCtrl m_Grid;
CImageList m_ImageList;
设置图片列表
m_imageList.Create(16,16, ILC_COLOR24|ILC_MASK, 0, 1)
CBitmap bmp;
bmp.LoadBitmap(IDC_CHECK);
m_ImageList.Add(&bmp, RGB(255, 0, 255));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDC_FOLDER));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDC_NODE));
m_Grid.SetImageList(&m_ImageList);
定义BCGPGrid位置
UINT controlID = IDC_PICTURE_AREA; //控件绘制所用的MFC控件picture control
CRect rc;
pParentWnd->GetDlgItem(controlID)->GetWindowRect(&rc);
pParentWnd->ScreenToClient(&rc);
pParentWnd->GetDlgItem(controlID)->ShowWindow(SW_HIDE); //隐藏picture control
创建
CWnd* pParentWnd = this; //控件隶属于对话框,父窗口赋值对话框this指针
BOOL bCreate = m_Grid.Create(WS_VISIBLE|WS_CHILD|WS_BORDER, rc, pParentWnd, controlID);
m_Grid.SetVisualManagerColorTheme(TRUE);
根据所需设置BCGPGrid属性
m_Grid.EnableColumnAutoSize(FALSE);
m_Grid.EnableGridLines(TRUE);
m_Grid.EnableMarkSortedColumn (FALSE);
m_Grid.EnableHeader (TRUE, BCGP_GRID_HEADER_MOVE_ITEMS);
m_Grid.EnableGridLines(TRUE);
m_Grid.SetClearInplaceEditOnEnter (FALSE);
m_Grid.EnableInvertSelOnCtrl ();
m_Grid.EnableHeader (TRUE, BCGP_GRID_HEADER_SORT);
m_Grid.EnableTreeLines(TRUE);
添加列
只有列头,没有数据。
InsertColumn函数最后一个参数为m_ImageList中的索引号。
//第1列为checkbox
m_Grid.InsertColumn(FIRST_CHECK, " ", 25, 2);
m_Grid.SetHeaderAlign(FIRST_CHECK, HDF_CENTER);
m_Grid.SetColumnAlign(FIRST_CHECK,HDF_LEFT);
//第2列为普通列
m_Grid.InsertColumn(SECOND_ORINARY, "名称", 125, 2);
m_Grid.SetHeaderAlign(SECOND_ORINARY, HDF_CENTER);
m_Grid.SetColumnAlign(SECOND_ORINARY,HDF_LEFT);
//第3列为button
m_Grid.InsertColumn(THIRD_BUTTON, "按钮", 125, 2);
m_Grid.SetHeaderAlign(THIRD_BUTTON, HDF_CENTER);
//第4列为combbox
m_Grid.InsertColumn(FOURTH_COMBBOX, "选项", 125, 2);
m_Grid.SetHeaderAlign(FOURTH_COMBBOX, HDF_CENTER);
//第5列为进度条
m_Grid.InsertColumn(FIVETH_PROGRESS_BAR, "进度", 125, 2);
m_Grid.SetHeaderAlign(FIVETH_PROGRESS_BAR, HDF_CENTER);
添加行
添加一行数据
m_Grid.CreateRow(m_Grid.GetColumnCount());
m_Grid.AddRow(pBCGRow, FALSE);
为单元格赋值
CBCGPGridRow *pRow = …
nCol为列索引号
CBCGPGridItem *pItem = pRow->GetItem(nCol);
CString strValue(“测试值”);
// checkbox列赋值
bool bCheck = true;
CBCGPGridCheckItem* pCheckItem = dynamic_cast<CBCGPGridCheckItem*>(pItem);
if (!pCheckItem)
{
pCheckItem = new CBCGPGridCheckItem (bCheck);
pRow->ReplaceItem (nCol, pCheckItem);
}
else
{
pCheckItem->SetState(bChecked);
}
// 普通列赋值
pItem->AllowEdit(FALSE);
pItem->SetValue(strValue.GetString());
// 赋值button
//combbox赋值
pItem->AddOption ("apple");
pItem->AddOption ("banana");
pItem->AddOption ("pear");
pItem->SetValue (strValue.GetString());
//进度条列赋值为10%
pItem->SetDataBar(10);
pItem->SetData(10);
pItem->AllowEdit(FALSE);
//pItem->Redraw();