原文出處:http://blog.sina.com.cn/s/blog_66d64ec90100ltcv.html
1. 給FlexGrid控件綁定成員變量:m_FlexGrid。
2. 設置行列數
m_FlexGrid.SetCols(4); //設置列數
m_FlexGrid.SetRows(6); //設置行數
3. 設置固定行數和固定列數
m_FlexGrid.SetFixedRows(1); //設置固定行數爲1行
m_FlexGrid.SetFixedCols(0); //設置固定列數爲0列
4. 設置列寬、行高
m_FlexGrid.SetColWidth(1,1500); //設置列號爲1的列寬爲1500
m_FlexGrid.SetRowHeight(2,300); //設置行號爲2的行高爲300
5. 設置文本對齊方式
m_FlexGrid.SetColAlignment(1,4); //設置列號爲1的文本對齊方式
參數對應描述爲:
0 單元內容頂部左對齊。
1 單元內容中間左對齊。對字符串的缺省設置值。
2 單元內容底部左對齊。
3 單元內容頂部居中。
4 單元內容中間居中。
5 單元內容底部居中。
6 單元內容頂部右對齊。
7 單元內容中間右對齊。對數字的缺省設置值。
8 單元內容底部右對齊。
9 單元內容一般對齊方式。對字符串中間左對齊而對數值中間右對齊。
6. 設置表頭和單元格內容
m_FlexGrid.SetTextArray(0,"Head1"); //設置表頭(第1列)內容爲“Head1”
m_FlexGrid.SetTextMatrix(1,1,"Text"); //設置單元格(行號1列號1)內容爲“Text”
7. 增加一行
m_FlexGrid.AddItem("AddString",(COleVariant)(3L)); //在行號爲3的位置增加一行
8. 合併單元格
for(i=0;i<4;i++)
m_FlexGrid.SetTextMatrix(5,i,"合計"); //將行號爲5、列號從0到4的單元格內容設爲相同“合計”
m_FlexGrid.SetMergeCells(2); //設置單元格合併方式(下述)
m_FlexGrid.SetMergeRow(5,TRUE); //設置要合併的行
SetMergeCells函數的參數值如下:
0: flexMergeNever 默認的選項,就是不合並
1: flexMergeFree 不規則的合併
2: flexMergeRestrictRows 行合併
3: flexMergeRestrictColumns 列合併
4: flexMergeRestrictBoth 行,列都合併
注意只有單元格內容相同時才能進行合併操作。
9. 製作可編輯的FlexGrid控件
放置一個Edit控件,綁定成員變量爲m_Edit,並設置初始狀態爲不可見。
響應FlexGrid控件的Click事件:
void CBlackBKDlg::OnClickMsflexgrid()
{
long lCol=m_FlexGrid.GetColSel(); //獲取點擊的行號
long lRow=m_FlexGrid.GetRowSel(); //獲取點擊的列號
if(lRow>m_FlexGrid.GetRows() || lRow==0) //判斷點擊是否有效
return;
CRect rect;
m_FlexGrid.GetWindowRect(&rect); //獲取FlexGrid控件的窗口矩形
ScreenToClient(&rect); //轉換爲客戶區矩形
CDC* pDC=GetDC();
//MSFlexGrid 控件的函數的長度單位是“緹(twips)”,需要將其轉化爲像素,1440 緹 = 1 英寸
//計算象素點和緹的轉換比例
int nTwipsPerDotX=1440/pDC->GetDeviceCaps(LOGPIXELSX);
int nTwipsPerDotY=1440/pDC->GetDeviceCaps(LOGPIXELSY);
//計算選中格的左上角的座標(象素爲單位)