📄 grid.h
字号:
void ClearGrid(); bool InsertRows( int pos = 0, int numRows = 1, bool updateLabels = true ); bool AppendRows( int numRows = 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 AppendCols( int numCols = 1, bool updateLabels = true ); bool DeleteCols( int pos = 0, int numCols = 1, bool updateLabels = true ); void DrawGridCellArea( wxDC& dc , const wxGridCellCoordsArray& cells ); void DrawGridSpace( wxDC& dc ); void DrawCellBorder( wxDC& dc, const wxGridCellCoords& ); void DrawAllGridLines( wxDC& dc, const wxRegion & reg ); void DrawCell( wxDC& dc, const wxGridCellCoords& ); void DrawHighlight(wxDC& dc, const wxGridCellCoordsArray& cells); // this function is called when the current cell highlight must be redrawn // and may be overridden by the user virtual void DrawCellHighlight( wxDC& dc, const wxGridCellAttr *attr ); virtual void DrawRowLabels( wxDC& dc, const wxArrayInt& rows ); virtual void DrawRowLabel( wxDC& dc, int row ); virtual void DrawColLabels( wxDC& dc, const wxArrayInt& cols ); virtual void DrawColLabel( wxDC& dc, int col ); // ------ Cell text drawing functions // void DrawTextRectangle( wxDC& dc, const wxString&, const wxRect&, int horizontalAlignment = wxALIGN_LEFT, int verticalAlignment = wxALIGN_TOP, int textOrientation = wxHORIZONTAL ); void DrawTextRectangle( wxDC& dc, const wxArrayString& lines, const wxRect&, int horizontalAlignment = wxALIGN_LEFT, int verticalAlignment = wxALIGN_TOP, int textOrientation = wxHORIZONTAL ); // Split a string containing newline chararcters into an array of // strings and return the number of lines // void StringToLines( const wxString& value, wxArrayString& lines ); void GetTextBoxSize( const wxDC& dc, const wxArrayString& lines, long *width, long *height ); // ------ // Code that does a lot of grid modification can be enclosed // between BeginBatch() and EndBatch() calls to avoid screen // flicker // void BeginBatch() { m_batchCount++; } void EndBatch(); int GetBatchCount() { return m_batchCount; } virtual void Refresh(bool eraseb = true, const wxRect* rect = (const wxRect *) NULL); // Use this, rather than wxWindow::Refresh(), to force an // immediate repainting of the grid. Has no effect if you are // already inside a BeginBatch / EndBatch block. // // This function is necessary because wxGrid has a minimal OnPaint() // handler to reduce screen flicker. // void ForceRefresh(); // ------ edit control functions // bool IsEditable() const { return m_editable; } void EnableEditing( bool edit ); void EnableCellEditControl( bool enable = true ); void DisableCellEditControl() { EnableCellEditControl(false); } bool CanEnableCellControl() const; bool IsCellEditControlEnabled() const; bool IsCellEditControlShown() const; bool IsCurrentCellReadOnly() const; void ShowCellEditControl(); void HideCellEditControl(); void SaveEditControlValue(); // ------ grid location functions // Note that all of these functions work with the logical coordinates of // grid cells and labels so you will need to convert from device // coordinates for mouse events etc. // void XYToCell( int x, int y, wxGridCellCoords& ); int YToRow( int y ); int XToCol( int x, bool clipToMinMax = false ); int YToEdgeOfRow( int y ); int XToEdgeOfCol( int x ); wxRect CellToRect( int row, int col ); wxRect CellToRect( const wxGridCellCoords& coords ) { return CellToRect( coords.GetRow(), coords.GetCol() ); } int GetGridCursorRow() { return m_currentCellCoords.GetRow(); } int GetGridCursorCol() { return m_currentCellCoords.GetCol(); } // check to see if a cell is either wholly visible (the default arg) or // at least partially visible in the grid window // bool IsVisible( int row, int col, bool wholeCellVisible = true ); bool IsVisible( const wxGridCellCoords& coords, bool wholeCellVisible = true ) { return IsVisible( coords.GetRow(), coords.GetCol(), wholeCellVisible ); } void MakeCellVisible( int row, int col ); void MakeCellVisible( const wxGridCellCoords& coords ) { MakeCellVisible( coords.GetRow(), coords.GetCol() ); } // ------ grid cursor movement functions // void SetGridCursor( int row, int col ) { SetCurrentCell( wxGridCellCoords(row, col) ); } bool MoveCursorUp( bool expandSelection ); bool MoveCursorDown( bool expandSelection ); bool MoveCursorLeft( bool expandSelection ); bool MoveCursorRight( bool expandSelection ); bool MovePageDown(); bool MovePageUp(); bool MoveCursorUpBlock( bool expandSelection ); bool MoveCursorDownBlock( bool expandSelection ); bool MoveCursorLeftBlock( bool expandSelection ); bool MoveCursorRightBlock( bool expandSelection ); // ------ label and gridline formatting // int GetDefaultRowLabelSize() { return WXGRID_DEFAULT_ROW_LABEL_WIDTH; } int GetRowLabelSize() { return m_rowLabelWidth; } int GetDefaultColLabelSize() { return WXGRID_DEFAULT_COL_LABEL_HEIGHT; } int GetColLabelSize() { return m_colLabelHeight; } wxColour GetLabelBackgroundColour() { return m_labelBackgroundColour; } wxColour GetLabelTextColour() { return m_labelTextColour; } wxFont GetLabelFont() { return m_labelFont; } void GetRowLabelAlignment( int *horiz, int *vert ); void GetColLabelAlignment( int *horiz, int *vert ); int GetColLabelTextOrientation(); wxString GetRowLabelValue( int row ); wxString GetColLabelValue( int col ); wxColour GetGridLineColour() { return m_gridLineColour; } // these methods may be overridden to customize individual grid lines // appearance virtual wxPen GetDefaultGridLinePen(); virtual wxPen GetRowGridLinePen(int row); virtual wxPen GetColGridLinePen(int col); wxColour GetCellHighlightColour() { return m_cellHighlightColour; } int GetCellHighlightPenWidth() { return m_cellHighlightPenWidth; } int GetCellHighlightROPenWidth() { return m_cellHighlightROPenWidth; } void SetRowLabelSize( int width ); void SetColLabelSize( int height ); void SetLabelBackgroundColour( const wxColour& ); void SetLabelTextColour( const wxColour& ); void SetLabelFont( const wxFont& ); void SetRowLabelAlignment( int horiz, int vert ); void SetColLabelAlignment( int horiz, int vert ); void SetColLabelTextOrientation( int textOrientation ); void SetRowLabelValue( int row, const wxString& ); void SetColLabelValue( int col, const wxString& ); void SetGridLineColour( const wxColour& ); void SetCellHighlightColour( const wxColour& ); void SetCellHighlightPenWidth(int width); void SetCellHighlightROPenWidth(int width); void EnableDragRowSize( bool enable = true ); void DisableDragRowSize() { EnableDragRowSize( false ); } bool CanDragRowSize() { return m_canDragRowSize; } void EnableDragColSize( bool enable = true ); void DisableDragColSize() { EnableDragColSize( false ); } bool CanDragColSize() { return m_canDragColSize; } void EnableDragColMove( bool enable = true ); void DisableDragColMove() { EnableDragColMove( false ); } bool CanDragColMove() { return m_canDragColMove; } void EnableDragGridSize(bool enable = true); void DisableDragGridSize() { EnableDragGridSize(false); } bool CanDragGridSize() { return m_canDragGridSize; } void EnableDragCell( bool enable = true ); void DisableDragCell() { EnableDragCell( false ); } bool CanDragCell() { return m_canDragCell; } // this sets the specified attribute for this cell or in this row/col void SetAttr(int row, int col, wxGridCellAttr *attr); void SetRowAttr(int row, wxGridCellAttr *attr); void SetColAttr(int col, wxGridCellAttr *attr); // returns the attribute we may modify in place: a new one if this cell // doesn't have any yet or the existing one if it does // // DecRef() must be called on the returned pointer, as usual wxGridCellAttr *GetOrCreateCellAttr(int row, int col) const; // shortcuts for setting the column parameters // set the format for the data in the column: default is string void SetColFormatBool(int col); void SetColFormatNumber(int col); void SetColFormatFloat(int col, int width = -1, int precision = -1); void SetColFormatCustom(int col, const wxString& typeName); void EnableGridLines( bool enable = true ); bool GridLinesEnabled() { return m_gridLinesEnabled; } // ------ row and col formatting // int GetDefaultRowSize(); int GetRowSize( int row ); int GetDefaultColSize(); int GetColSize( int col ); wxColour GetDefaultCellBackgroundColour(); wxColour GetCellBackgroundColour( int row, int col ); wxColour GetDefaultCellTextColour(); wxColour GetCellTextColour( int row, int col ); wxFont GetDefaultCellFont(); wxFont GetCellFont( int row, int col ); void GetDefaultCellAlignment( int *horiz, int *vert ); void GetCellAlignment( int row, int col, int *horiz, int *vert ); bool GetDefaultCellOverflow(); bool GetCellOverflow( int row, int col ); void GetCellSize( int row, int col, int *num_rows, int *num_cols ); void SetDefaultRowSize( int height, bool resizeExistingRows = false ); void SetRowSize( int row, int height ); void SetDefaultColSize( int width, bool resizeExistingCols = false ); void SetColSize( int col, int width ); //Column positions int GetColAt( int colPos ) const { if ( m_colAt.IsEmpty() ) return colPos; else return m_colAt[colPos]; } void SetColPos( int colID, int newPos ); int GetColPos( int colID ) const { if ( m_colAt.IsEmpty() ) return colID; else { for ( int i = 0; i < m_numCols; i++ ) { if ( m_colAt[i] == colID ) return i; } } return -1; } // automatically size the column or row to fit to its contents, if // setAsMin is true, this optimal width will also be set as minimal width // for this column void AutoSizeColumn( int col, bool setAsMin = true ) { AutoSizeColOrRow(col, setAsMin, true); } void AutoSizeRow( int row, bool setAsMin = true ) { AutoSizeColOrRow(row, setAsMin, false); } // auto size all columns (very ineffective for big grids!) void AutoSizeColumns( bool setAsMin = true ) { (void)SetOrCalcColumnSizes(false, setAsMin); } void AutoSizeRows( bool setAsMin = true ) { (void)SetOrCalcRowSizes(false, setAsMin); } // auto size the grid, that is make the columns/rows of the "right" size // and also set the grid size to just fit its contents void AutoSize(); // autosize row height depending on label text void AutoSizeRowLabelSize( int row ); // autosize column width depending on label text void AutoSizeColLabelSize( int col ); // column won't be resized to be lesser width - this must be called during // the grid creation because it won't resize the column if it's already // narrower than the minimal width void SetColMinimalWidth( int col, int width ); void SetRowMinimalHeight( int row, int width ); /* These members can be used to query and modify the minimal * acceptable size of grid rows and columns. Call this function in * your code which creates the grid if you want to display cells * with a size smaller than the default acceptable minimum size. * Like the members SetColMinimalWidth and SetRowMinimalWidth, * the existing rows or columns will not be checked/resized. */ void SetColMinimalAcceptableWidth( int width ); void SetRowMinimalAcceptableHeight( int width ); int GetColMinimalAcceptableWidth() const; int GetRowMinimalAcceptableHeight() const; void SetDefaultCellBackgroundColour( const wxColour& ); void SetCellBackgroundColour( int row, int col, const wxColour& ); void SetDefaultCellTextColour( const wxColour& ); void SetCellTextColour( int row, int col, const wxColour& ); void SetDefaultCellFont( const wxFont& ); void SetCellFont( int row, int col, const wxFont& ); void SetDefaultCellAlignment( int horiz, int vert ); void SetCellAlignment( int row, int col, int horiz, int vert ); void SetDefaultCellOverflow( bool allow ); void SetCellOverflow( int row, int col, bool allow ); void SetCellSize( int row, int col, int num_rows, int num_cols ); // takes ownership of the pointer void SetDefaultRenderer(wxGridCellRenderer *renderer); void SetCellRenderer(int row, int col, wxGridCellRenderer *renderer); wxGridCellRenderer *GetDefaultRenderer() const; wxGridCellRenderer* GetCellRenderer(int row, int col); // takes ownership of the pointer void SetDefaultEditor(wxGridCellEditor *editor); void SetCellEditor(int row, int col, wxGridCellEditor *editor); wxGridCellEditor *GetDefaultEditor() const; wxGridCellEditor* GetCellEditor(int row, int col); // ------ cell value accessors // wxString GetCellValue( int row, int col ) { if ( m_table ) { return m_table->GetValue( row, col ); } else { return wxEmptyString; } } wxString GetCellValue( const wxGridCellCoords& coords ) { return GetCellValue( coords.GetRow(), coords.GetCol() ); } void SetCellValue( int row, int col, const wxString& s ); void SetCellValue( const wxGridCellCoords& coords, const wxString& s ) { SetCellValue( coords.GetRow(), coords.GetCol(), s ); } // returns true if the cell can't be edited bool IsReadOnly(int row, int col) const; // make the cell editable/readonly void SetReadOnly(int row, int col, bool isReadOnly = true); // ------ select blocks of cells // void SelectRow( int row, bool addToSelected = false ); void SelectCol( int col, bool addToSelected = false ); void SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol, bool addToSelected = false ); void SelectBlock( const wxGridCellCoords& topLeft, const wxGridCellCoords& bottomRight, bool addToSelected = false ) { SelectBlock( topLeft.GetRow(), topLeft.GetCol(), bottomRight.GetRow(), bottomRight.GetCol(),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -