bcgsoft公司的介面軟體雖然已經整合到vs2008sp1,vs2010中,但其中的grid功能並沒有整合進去,這個格仔有比較強大的功能,本文對自動分組進行一些研究。
主要使用的兩個類cbcgpgridctrl和cbcgpgridview,如果需要在view中使用格仔,直接使用cbcgpgridview即可,這個檢視已經包含了
cbcgpgridctrl的乙個例項,用getgridctrl獲取後進行操作即可。在對話方塊中用
cbcgpgridctrl進行操作。
若需要對格仔的行進行自動分組,出現如下效果:
首先需要cbcgpgridview和
cbcgpgridctrl繼承兩個新類,取名為
cmygridview 和cmygridctrl
在 cmygridview
的oncreate方法中,不再執行
cbcgpgridview的oncreate
方法,而是執行cview的oncreate方法,並且建立
cmygridctrl
的乙個例項,作為
cmygridview
的成員變數,
int在view銷毀時銷毀gridcmygridview
::oncreate
(lpcreatestruct lpcreatestruct
)assert_valid
(m_pmygridctrl
);if
(!m_pmygridctrl
->
create
(ws_child
,rectclient
,this,1
))m_pmygridctrl
->
showwindow
(sw_show
);return0;
}
void對於尺寸變化時對格仔進行調整cmygridview
::ondestroy
()m_pmygridctrl
=null
;cbcgpgridview
::ondestroy
();}
void當view獲取焦點時將焦點交給gridcmygridview
::onsize
(uint ntype
,intcx,
intcy
)void
cmygridview
::adjustlayout
()crect
rectclient
;getclientrect
(rectclient
);m_pmygridctrl
->
setwindowpos
(null,0
,0,rectclient
.width
(),rectclient
.height
(),swp_noactivate
|swp_nozorder);}
void在grid繼承類中做如下修改:cmygridview
::onsetfocus
(cwnd
*poldwnd)}
建立時對格仔做各種初始化
int以上呼叫cmygridctrl
::oncreate
(lpcreatestruct lpcreatestruct
)
insertgroupcolumn 開啟分組功能
實現兩個虛方法,乙個是比較行大小,如果返回0表示這兩行分在一組
乙個是獲取分組後的組的名稱
int這兩個方法,在cmygridctrl
::comparegroup
(const
cbcgpgridrow
*prow1
,const
cbcgpgridrow
*prow2
,int
icolumn
)cstring
cmygridctrl
::getgroupname
(int
/*icolumn*/
,cbcgpgriditem
*pitem
)
cbcgpgridctrl會進行呼叫。
經過測試,對於行比較多時,若比較方法不好,效率比較低。
以上參考bcg的例子bcgpgridexample而研究而成,bcg的版本為16.1,使用vs2010
關於MongoDB的group分組
關於mongodb的group分組 測試條件 windows mongodb 1.8.2 先插入測試資料 for var i 1 i 20 i 1.普通 分組查詢 db.test.group initial reduce function doc,prev db.runcommand initial...
關於jqGrid中的分組功能
jqgrid為資料提供了分組的功能,該分組可以根據相應的一列的資訊進行分組,同時也可以根據多列的資料進行分組。如圖 圖1 根據位址和年齡資訊進行分組並顯示每組中記錄的數量 grouping true,groupingview 條記錄 表頭顯示資料 每組中包含的資料量 groupcollapse fa...
關於計算機讀研的小建議
人生的每個時期都很重要,讀研期間,更是如此。計算機專業的碩士,專碩兩年,學碩三年。兩三年的時間,稍不注意,也是轉瞬即逝的。計算機是強調實踐出真知的學科,我們選擇了這條路,除了想要學到有趣的知識,也希望畢業時找到心儀的工作。如何合理的規劃三年的時間,就成了乙個重要的問題。其實,留給我們的時間,不足三年...