wxWidgets实战:wxGrid创建表单之复选框样式

1》
创建wxGrid

WX_GRID* m_fieldsGrid 
m_fieldsGrid = new WX_GRID( sbFields->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_fields = new FIELDS_GRID_TABLE<SCH_FIELD>( this, aParent, m_fieldsGrid, m_symbol );

FDC_SHOW_NAME

wxWidgets实战:wxGrid创建表单之复选框样式_第1张图片
FDC_SHOW_NAME其实上图表格中的Show Name一列,下面我们来研究如何在wxGrid表单创建复选框样式的列:

case FDC_SHOW_NAME:
   return aTypeName == wxGRID_VALUE_BOOL;

“wxGRID_VALUE_BOOL” 布尔型数据,是一种数据类型,用在网格控件wxGrid中。

复选框属性: wxGridCellAttr m_boolAttr

获取m_boolAttr

template <class T>
wxGridCellAttr* FIELDS_GRID_TABLE<T>::GetAttr( int aRow, int aCol, wxGridCellAttr::wxAttrKind  )
{
   case FDC_SHOW_NAME:  
      m_boolAttr->IncRef();
      return m_boolAttr;

创建m_boolAttr;

wxGridCellAttr*       m_boolAttr;
m_boolAttr = new wxGridCellAttr;
m_boolAttr->SetRenderer( new wxGridCellBoolRenderer() );
m_boolAttr->SetEditor( new wxGridCellBoolEditor() );
m_boolAttr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );

wxGridCellBoolRenderer是wxWidgets库中的一个类,用于在网格控件中渲染布尔值单元格,并允许用户以可视化的方式查看和操作这些数据。
wxWidgets实战:wxGrid创建表单之复选框样式_第2张图片
wxGridCellBoolRender类是wxGridCellRender的子类,现在我们看看wxWidgets中包含了多少中Grid Cell的渲染器。
wxWidgets实战:wxGrid创建表单之复选框样式_第3张图片
wxGridCellBoolEditor是一个用于表格控件(wxGrid)的编辑器类,用于编辑布尔类型的单元格数据。
wxWidgets实战:wxGrid创建表单之复选框样式_第4张图片
wxWidgets中包含的所有wxGridCellEditor如下图所示:
wxWidgets实战:wxGrid创建表单之复选框样式_第5张图片
我们可以看到wxGridEditor与wxGridRender基本上 是一一对应的。
如果我们想要冲毁一种新的表格列样式,那么需要可能实现两个类?一个类继承wxGridEditor,一个类继承wxGridRender。

销毁m_boolAttr

FIELDS_GRID_TABLE<T>::~FIELDS_GRID_TABLE()
{
    m_boolAttr->DecRef();

更新复选框:插入和读取

int simEnableFieldRow;
m_fieldsGrid->SetCellValue( simEnableFieldRow, FDC_SHOW_NAME, wxT( "0" ) );
m_fieldsGrid->GetCellValue( ii, FDC_SHOW_NAME) 

更新事件

绑定事件:

    m_fieldsGrid->Bind( wxEVT_GRID_CELL_CHANGING, &DIALOG_SYMBOL_PROPERTIES::OnGridCellChanging,
                        this );

事件解绑:

 m_fieldsGrid->Unbind( wxEVT_GRID_CELL_CHANGING, &DIALOG_SYMBOL_PROPERTIES::OnGridCellChanging,
                          this );

你可能感兴趣的:(wxWidgets,wxWidgets,kicad,wxGrid,表单,网格)