本例要解決的問題是:成績按優良中差分組。
一,新建乙個基於對話方塊的bcg
工程,單
chengjigridctrl。
二,新增cchengjigridctrl類,派生於網格控制項。標頭檔案如下:
class cchengjigridctrl : public cbcgpgridctrl
public:
cchengjigridctrl();
virtual ~cchengjigridctrl();
virtual int comparegroup (const cbcgpgridrow* prow1, const cbcgpgridrow* prow2, int icolumn);
virtual cstring getgroupname (int ngroupcol, cbcgpgriditem* pitem);
//}afx_msg
declare_message_map()
原始檔如下:
begin_message_map(cchengjigridctrl, cbcgpgridctrl)
//}afx_msg_map
end_message_map()
cchengjigridctrl::cchengjigridctrl()
cchengjigridctrl::~cchengjigridctrl()
int cchengjigridctrl::oncreate(lpcreatestruct lpcreatestruct)
if (cbcgpgridctrl::oncreate(lpcreatestruct) == -1)
return -1;
enablemarksortedcolumn (true, false);
enableheader (true, bcgp_grid_header_move_items | bcgp_grid_header_sort);
enablerowheader (true);
enablelinenumbers ();
enableinvertselonctrl ();
const int ncolumns = 2;
insertcolumn (0, "姓名
", 80);
insertcolumn (1, "成績
", 80);
// 以第二列分組
insertgroupcolumn (0, 1);
_variant_t var[ncolumns] = , ,
, ,const int irowcnt = sizeof(var)/sizeof(var[0]);
for (int i = 0; i
cbcgpgridrow* prow = createrow (getcolumncount ());
for(int j = 0 ; j
prow->getitem (j)->setvalue (var[i][j]);
addrow (prow, false);
setreadonly ();
adjustlayout ();
return 0;
int getleve(long l)
if( l >= 90 )
return 4;
if( l >= 80 )
return 3;
if( l >= 70 )
return 2;
if( l >= 60 )
return 1;
return 0;
int cchengjigridctrl::comparegroup (const cbcgpgridrow* prow1, const cbcgpgridrow* prow2, int /*icolumn*/)
assert_valid (this);
assert_valid (prow1);
assert_valid (prow2);
long lval1 = (long) prow1->getitem (1)->getvalue ();
long lval2 = (long) prow2->getitem (1)->getvalue ();
return getleve(lval2) - getleve(lval1);
cstring cchengjigridctrl::getgroupname (int /*icolumn*/, cbcgpgriditem* pitem)
assert_valid (this);
assert_valid (pitem);
long lval = (long) pitem->getvalue ();
long lleve = getleve(lval);
if( 4 == lleve )
return _t("優
");
else if( 3 == lleve)
return _t("良
");
else if( 2 == lleve )
return _t("中
");
else if( 1 == lleve )
return _t("合格
");
return _t("不合格
");
三,cchengjigridctrldlg類增加變數
cchengjigridctrl m_grid;
四,cchengjigridctrldlg::oninitdialog
crect r(0,0,300,300);
m_grid.create(ws_child, r, this, 1);
m_grid.showwindow(sw_show);
五,ctrl+f5檢視執行效果。如圖:
MFC中的CListCtrl網格控制項新增行
1 2 3 4 5 6 7 8 9 m list.attach getdlgitem this m hwnd,idc list1 手動關聯變數 m list.insertcolumn 0,t 工號 0,120 m list.insertcolumn 1,t 姓名 0,120 m list.inser...
高階的TreeView控制項
帶 透明效果的treeview.能任意改變線條的位置,底圖可擴充到文字背後,整個控制項可以透明地浮動於form上。可以自動展開閉合,自動顯示滾動條。目前只做了3層。使用方法和treeview不一樣。基本方法 add1 add2 add3 分別新增各層的資料。image1 image2是各層的。tex...
PyQt5 高階控制項使用(QListWidget)
qlistwidget是乙個用於顯示資料的列表,每個條目中都是乙個qlistwidgetitem物件 qlistwidget可以設定多選 常用方法如下 常用訊號 例如 1 qlistwidget 控制項使用 2from pyqt5.qtwidgets import 3from pyqt5.qtgui...