關於BCGGrid自動分組的研究

2021-06-17 19:29:34 字數 2331 閱讀 7257

bcgsoft公司的介面軟體雖然已經整合到vs2008sp1,vs2010中,但其中的grid功能並沒有整合進去,這個格仔有比較強大的功能,本文對自動分組進行一些研究。

主要使用的兩個類cbcgpgridctrl和cbcgpgridview,如果需要在view中使用格仔,直接使用cbcgpgridview即可,這個檢視已經包含了

cbcgpgridctrl的乙個例項,用getgridctrl獲取後進行操作即可。在對話方塊中用

cbcgpgridctrl進行操作。

若需要對格仔的行進行自動分組,出現如下效果:

首先需要cbcgpgridview和

cbcgpgridctrl繼承兩個新類,取名為

cmygridview 和cmygridctrl

在  cmygridview

的oncreate方法中,不再執行

cbcgpgridview的oncreate

方法,而是執行cview的oncreate方法,並且建立

cmygridctrl

的乙個例項,作為

cmygridview

的成員變數,

int

cmygridview

::oncreate

(lpcreatestruct lpcreatestruct

)assert_valid

(m_pmygridctrl

);if

(!m_pmygridctrl

->

create

(ws_child

,rectclient

,this,1

))m_pmygridctrl

->

showwindow

(sw_show

);return0;

}

在view銷毀時銷毀grid

void

cmygridview

::ondestroy

()m_pmygridctrl

=null

;cbcgpgridview

::ondestroy

();}

對於尺寸變化時對格仔進行調整

void

cmygridview

::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);}

當view獲取焦點時將焦點交給grid

void

cmygridview

::onsetfocus

(cwnd

*poldwnd)}

在grid繼承類中做如下修改:

建立時對格仔做各種初始化

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...

關於計算機讀研的小建議

人生的每個時期都很重要,讀研期間,更是如此。計算機專業的碩士,專碩兩年,學碩三年。兩三年的時間,稍不注意,也是轉瞬即逝的。計算機是強調實踐出真知的學科,我們選擇了這條路,除了想要學到有趣的知識,也希望畢業時找到心儀的工作。如何合理的規劃三年的時間,就成了乙個重要的問題。其實,留給我們的時間,不足三年...