VC MSFlexGrid基本使用

原文出處: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);
                      //計算選中格的左上角的座標(象素爲單位)
               

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章