1. 介紹
3. 演示樣例代碼
?? ?在此我們實現一個4*5的表格,其核心代碼例如以下所看到的:???
?? ?wxGrid控件時wxWidgets界面庫中內置的網格控件。
通經常使用來顯示表格數據。該控件擁有強大的功能。開發人員可依據自己的需求對其進行定制。
2. 經常使用API? ??? 構造函數:wxGrid ()wxGrid (wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxWANTS_CHARS, const wxString &name=wxGridNameStr) 創建表格的API:// 創建一個空的表格bool Create (wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxWANTS_CHARS, const wxString &name=wxGridNameStr)// 創建一個指定行,制定列的表格bool CreateGrid (int numRows, int numCols, wxGridSelectionModes selmode=wxGridSelectCells)關于大小的API: // 獲取列標簽的高度int GetColLabelSize () const// 獲取指定列的寬度int GetColSize (int col) const// 獲取默認的列標簽寬度int GetDefaultColLabelSize () const// 獲取默認的列寬int GetDefaultColSize () const// 獲取默認的行標簽寬度int GetDefaultRowLabelSize () const// 獲取默認的行高度int GetDefaultRowSize () const// 獲取行標簽的寬度int GetRowLabelSize () const// 獲取指定行的高度int GetRowSize (int row) const// 設置指定列的寬度void SetColSize (int col, int width)// 設置列標簽的高度void SetColLabelSize (int height)// 設置默認的列寬度void SetDefaultColSize (int width, bool resizeExistingCols=false)// 設置默認的行高度void SetDefaultRowSize (int height, bool resizeExistingRows=false)// 設置行標簽的寬度void SetRowLabelSize (int width)// 設置指定行的高度void SetRowSize (int row, int height)// 獲取列的大小信息wxGridSizesInfo GetColSizes () const// 獲取行的大小信息wxGridSizesInfo GetRowSizes () const// 設置列的大小信息void SetColSizes (const wxGridSizesInfo &sizeInfo)// 設置行的大小信息void SetRowSizes (const wxGridSizesInfo &sizeInfo)// 設置指定單元格的大小void SetCellSize (int row, int col, int num_rows, int num_cols)// 獲取指定單元格的大小CellSpan GetCellSize (int row, int col, int *num_rows, int *num_cols) const// 獲取單元格的大小wxSize GetCellSize (const wxGridCellCoords &coords)// 推斷制定列大小是否可變bool CanDragColSize (int col) const// 推斷表格大小是否可變bool CanDragGridSize () const// 推斷制定行大小是否可變bool CanDragRowSize (int row) const// 使指定列大小不能改變void DisableColResize (int col)// 使指定行大小不能改變void DisableRowResize (int row)// 使列大小不能改變void DisableDragColSize ()// 使表格大小不能改變void DisableDragGridSize ()// 使行大小不能改變void DisableDragRowSize ()void EnableDragColSize (bool enable=true)// 設置表格大小是否可變void EnableDragGridSize (bool enable=true)// 設置行大小是否可變void EnableDragRowSize (bool enable=true)// 獲取列數int GetNumberCols () const// 獲取行數int GetNumberRows () const關于邊框的API:// 獲取指定列的畫筆virtual wxPen GetColGridLinePen (int col)// 獲取默認的表格邊框的畫筆virtual wxPen GetDefaultGridLinePen ()// 獲取表格邊框的顏色wxColour GetGridLineColour () const// 獲取行邊框的畫筆virtual wxPen GetRowGridLinePen (int row)// 表格是否有邊框bool GridLinesEnabled () const// 設置表格邊框的顏色void SetGridLineColour (const wxColour &colour)關于表頭的API: // 獲取指定列標簽(表頭)的對其方式void GetColLabelAlignment (int *horiz, int *vert) const // 獲取指定列標簽(表頭)的文件的方向int GetColLabelTextOrientation () const// 獲取制定列標簽的內容wxString GetColLabelValue (int col) const // 獲取標簽(表頭)的背景顏色wxColour GetLabelBackgroundColour () const // 獲取標簽的字體wxFont GetLabelFont () const // 獲取標簽的文字顏色wxColour GetLabelTextColour () const // 獲取行標簽的對齊方式void GetRowLabelAlignment (int *horiz, int *vert) const// 獲取行標簽的內容wxString GetRowLabelValue (int row) const// 隱藏標簽void HideColLabels () // 隱藏行標簽void HideRowLabels () // 設置列標簽的對齊方式void SetColLabelAlignment (int horiz, int vert)// 設置列標簽的文字方向void SetColLabelTextOrientation (int textOrientation)// 設置列標簽的內容void SetColLabelValue (int col, const wxString &value)// 設置標簽的背景顏色void SetLabelBackgroundColour (const wxColour &colour)// 設置標簽的字體void SetLabelFont (const wxFont &font)// 設置標簽的文字顏色void SetLabelTextColour (const wxColour &colour)// 設置行標簽的對齊方式void SetRowLabelAlignment (int horiz, int vert)// 設置行標簽的內容void SetRowLabelValue (int row, const wxString &value)關于表結構的API:// 追加列bool AppendCols (int numCols=1, bool updateLabels=true)// 追加行bool AppendRows (int numRows=1, bool updateLabels=true)// 刪除指定列bool DeleteCols (int pos=0, int numCols=1, bool updateLabels=true) // 刪除指定行bool DeleteRows (int pos=0, int numRows=1, bool updateLabels=true)// 插入新列bool InsertCols (int pos=0, int numCols=1, bool updateLabels=true)// 插入新行bool InsertRows (int pos=0, int numRows=1, bool updateLabels=true)關于選中的API:// 清楚選中狀態void ClearSelection ()// 獲取選中的單元格wxGridCellCoordsArray GetSelectedCells () const// 獲取選中的列wxArrayInt GetSelectedCols () const// 獲取選中的行wxArrayInt GetSelectedRows () const// 獲取選中區域的背景顏色wxColour GetSelectionBackground () const// 獲取選中區域的前景色wxColour GetSelectionForeground () const// 獲取選中模式wxGridSelectionModes GetSelectionMode () const// 推斷制定單元格是否被選中bool IsInSelection (int row, int col) const// 推斷是否有選中的單元格bool IsSelection () const// 選擇整個表格void SelectAll ()// 選擇指定的區域void SelectBlock (int topRow, int leftCol, int bottomRow, int rightCol, bool addToSelected=false)// 選擇指定的區域void SelectBlock (const wxGridCellCoords &topLeft, const wxGridCellCoords &bottomRight, bool addToSelected=false)// 選擇制定的列void SelectCol (int col, bool addToSelected=false)// 選擇指定的行void SelectRow (int row, bool addToSelected=false)// 設置選中后的背景顏色void SetSelectionBackground (const wxColour &c)// 設置選中后的前景色void SetSelectionForeground (const wxColour &c)// 設置選中模式void SetSelectionMode (wxGridSelectionModes selmode)關于格式的API:// 獲取制定單元格的對其方式void GetCellAlignment (int row, int col, int *horiz, int *vert) const// 獲取制定單元格的背景顏色wxColour GetCellBackgroundColour (int row, int col) const// 獲取制定單元格的字體wxFont GetCellFont (int row, int col) const// 獲取制定單元格的文字顏色wxColour GetCellTextColour (int row, int col) const// 獲取指定單元格默認的對齊方式void GetDefaultCellAlignment (int *horiz, int *vert) const // 獲取單元格默認的背景色wxColour GetDefaultCellBackgroundColour () const // 獲取單元格默認的字體wxFont GetDefaultCellFont () const// 獲取單元格默認的字體顏色wxColour GetDefaultCellTextColour () const// 設置指定單元格的對齊方式void SetCellAlignment (int row, int col, int horiz, int vert)// 設置指定單元格的對齊方式void SetCellAlignment (int align, int row, int col)// 設置單元格的背景顏色void SetCellBackgroundColour (int row, int col, const wxColour &colour)// 設置單元格的字體void SetCellFont (int row, int col, const wxFont &font)// 設置單元格的字體顏色void SetCellTextColour (int row, int col, const wxColour &colour)// 設置單元格的字體顏色void SetCellTextColour (const wxColour &val, int row, int col)// 設置單元格字體顏色void SetCellTextColour (const wxColour &colour)// 設置單元格默認的對齊方式void SetDefaultCellAlignment (int horiz, int vert)// 設置單元格默認的背景顏色void SetDefaultCellBackgroundColour (const wxColour &colour)// 設置單元格默認的字體void SetDefaultCellFont (const wxFont &font)// 設置單元格默認的字體顏色void SetDefaultCellTextColour (const wxColour &colour)// 使單元格處于僅僅讀狀態void DisableCellEditControl ()// 設置單元格的編輯狀態(可編輯或不可編輯)void EnableCellEditControl (bool enable=true)// 設置表格的編輯狀態(可編輯或步可編輯)void EnableEditing (bool edit)// 獲取指定單元格的值wxString GetCellValue (int row, int col) const// 獲取制定單元格的值wxString GetCellValue (const wxGridCellCoords &coords) const// 當前單元格是否為僅僅讀bool IsCurrentCellReadOnly () const// 表格是否為可編輯的bool IsEditable () const// 指定單元格是否為僅僅讀bool IsReadOnly (int row, int col) const// 設置指定單元格的值void SetCellValue (int row, int col, const wxString &s)// 設置制定單元格的值void SetCellValue (const wxGridCellCoords &coords, const wxString &s)// 設置制定單元格的值void SetCellValue (const wxString &val, int row, int col)// 設置制定單元格的僅僅讀屬性void SetReadOnly (int row, int col, bool isReadOnly=true)// 單元格大小自適應void AutoSize ()// 指定列標簽大小自適應void AutoSizeColLabelSize (int col)// 指定列大小自適應void AutoSizeColumn (int col, bool setAsMin=true)// 設置列的大小自適應屬性void AutoSizeColumns (bool setAsMin=true)// 指定行大小自適應void AutoSizeRow (int row, bool setAsMin=true)// 指定行標簽大小自適應void AutoSizeRowLabelSize (int col)// 設置行的大小自適應屬性void AutoSizeRows (bool setAsMin=true)// 推斷指定列是否是顯示的bool IsColShown (int col) const // 推斷制定行是否是顯示狀態bool IsRowShown (int row) const // 設置制定列的最小寬度void SetColMinimalWidth (int col, int width) // 隱藏制定列void HideCol (int col)// 顯示指定列void ShowCol (int col) // 設置行的最小高度void SetRowMinimalHeight (int row, int height) // 隱藏指定行 void HideRow (int col)// 顯示指定行void ShowRow (int col) // 推斷單元格大小是否可變bool CanDragCell () const // 設置單元格大小是否可變void EnableDragCell (bool enable=true) 關于屬性的API:// 刷新屬性void RefreshAttr (int row, int col)// 設置指定列的屬性void SetColAttr (int col, wxGridCellAttr *attr)// 設置表格外邊距void SetMargins (int extraWidth, int extraHeight)// 設置指定行屬性void SetRowAttr (int row, wxGridCellAttr *attr)// 獲取單元格屬性wxGridCellAttr * GetOrCreateCellAttr (int row, int col) const// 獲取列數int GetNumberCols () const// 獲取行數int GetNumberRows () const關于排序的API:// 推斷排序規則是否為ASCII碼bool IsSortOrderAscending () const// 設置排序列void SetSortingColumn (int col, bool ascending=true) // 設置列的排序規則void SetColumnsOrder (const wxArrayInt &order)// 獲取列的最小寬度int GetColMinimalWidth (int col) const// 獲取行的最小高度int GetRowMinimalHeight (int col) const選中模式:wxGridSelectCellswxGridSelectRowswxGridSelectColumnswxGridSelectRowsOrColumns對齊方式:wxALIGN_LEFT wxALIGN_TOP wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER_VERTICAL wxALIGN_CENTRE_VERTICAL wxALIGN_CENTER wxALIGN_CENTRE
具體解釋的API介紹見:http://docs.wxwidgets.org/trunk/classwx_grid.html3. 演示樣例代碼
?? ?在此我們實現一個4*5的表格,其核心代碼例如以下所看到的:???
void CreateTable(wxWindow* parent)
{char* attr[] = {"姓名", "年齡", "性別", "身高", "體重"};wxGrid *grid = new wxGrid(parent, wxID_ANY, wxPoint(0, 0), wxSize(580, 310));// 創建一個8×5的表格grid->CreateGrid(8, 5);// 設置默認的行高度grid->SetDefaultRowSize(35);// 設置默認的列寬度grid->SetDefaultColSize(100);// 設置表頭的背景色grid->SetLabelBackgroundColour(0x228B22);// 設置表頭的顏色grid->SetLabelTextColour(0xFFFFFF);// 設置單元格中數據的對其方式grid->SetDefaultCellAlignment(wxALIGN_CENTER, wxALIGN_CENTRE);// 設置表頭for (int i = 0; i < 5; i++){grid->SetColLabelValue(i, wxString::FromUTF8(attr[i]));}// 使表格全然顯示parent->Fit();
}