MFCGridCtrl控制項的使用

2021-06-29 04:21:45 字數 2183 閱讀 2576

2010-08-08 19:41:38

|  分類:

專業技術

|  標籤:

mfcgridctrl|舉報

|字型大小訂閱

1、首先要使用mfcgridctrl 必須要在用到的系統中匯入gridctrl資料夾的全部cpp和h檔案(方法 project-->add to project -->files),這時候可以在類的試圖中看到cgridctrl ccellid等等一些類

2、加入乙個custom control,將class設為: mfcgridctrl 記住要 mfcgridctrl 這個名字,原因是該類用registerclass註冊了該類,style等可以隨便設定

3、在使用類中,定義乙個物件: cgridctrl m_attrgrid;注意一定要定義乙個物件,否則該類如果是視窗類的話將用domodal無法顯示

4、編譯時如果報錯,說找不到cgridctrl,那麼在相應的定義物件的 .h內將gridctrl.h包含進入 #include "路徑/gridctrl.h"

5、在dodataexchange(cdataexchange* pdx)函式中加入:

ddx_gridcontrol(pdx, idc_grid, m_grid);

6、如果需要初始化該控制項 可在使用的類中的 oninitdialog 加相關函式

比如 我寫的

m_attrgrid.setcolumncount(3); 

// 設定總共的列數

m_attrgrid.setrowcount(1) 

// 設定總共的行數

m_attrgrid.setfixedrowcount(1);  // 設定固定行數

m_attrgrid.setitemtext(0,0,"屬性"); // setitemtext 用來設定某行某列的具體文字數值

m_attrgrid.setitemtext(0,1,"標準值");

m_attrgrid.setitemtext(0,2,"當前值");

// 可以通過

//  m_attrgrid.setitemstate(i,0,gvis_readonly);

//  m_attrgrid.setitemstate(i,1,gvis_readonly);

/// 來設定單元格是否唯讀

crect grect;

m_attrgrid.getwindowrect(&grect); 

// 得到控制項的寬度

m_attrgrid.setcolumnwidth(0,grect.width()/3-2); // 設定沒列的寬度

m_attrgrid.setcolumnwidth(1,grect.width()/3-2);

m_attrgrid.setcolumnwidth(2,grect.width()/3-2);

7、 對於最常見的乙個功能,就是修改完畢後馬上驗證和儲存的方法可以參考如下

修改cgridctrl::onendeditcell 函式,在該函式中新增驗證函式比如

void cgridctrl::onendeditcell(int nrow, int ncol, cstring str)

{ cstring strcurrent = getitemtext(nrow, ncol);

// self check

str=checkinputvalid(nrow, ncol, str); // 你的驗證函式

// 其中strcurrent為修改前的值,str為修改後的值

.....

對於修改後資料的儲存,可以這麼做

先建立對映

on_notify(gvn_endlabeledit, idc_attr_grid, onendeditgrid)

然後在 //{{afx_msg(cxmlviewerdlg) 中建立

afx_msg void onendeditgrid(nmhdr* pnmhdr, lresult* presult);

onendeditgrid(nmhdr* pnmhdr, lresult* presult) 中實現資料儲存操作

{nm_gridview* pnmgv = (nm_gridview*) pnmhdr;

ccellid cii(pnmgv->irow, pnmgv->icolumn);

cstring newvalue=m_attrgrid.getitemtext(cii.row,cii.col);

MFCGridCtrl控制項的使用

1.將該控制項涉及的.cpp 6個 和.h 8個 檔案加入工程 2.從工具箱中拖入custom control,右擊該控制項屬性,將class項設定為mfcgridctrl 3.在工程標頭檔案中,include gridctrl.h 且定義變數cgridctrl m ctrlgrid 4.在工程定義...

MFCGridCtrl的使用方法

1 新建基於dialog的mfc工程gridctrltest 2 將 gridctrl.cpp gridctrl.h 等檔案加到工程中,並編譯 我新增gridctrl src下檔案後,vs2010編譯報錯 gridctrltest memdc.h 26 error c2011 cmemdc clas...

C 的DateTimePicker控制項的使用

1 datetimepicker預設的顯示年月日.如果要顯示時間,將format屬性設為time,並設定showupdown true 2 datetimepicker1.value屬性 year,month,day,hour,minute,second 分別獲取此日期中的年,月,日,時,分,秒 d...