GridControl::InsertRow

 

Description

Insert one row at selected row, or add one row

Syntax

bool InsertRow( bool bNoSelAddToEnd = true )

Parameters

bNoSelAddToEnd
[input] if true it will add one row when there's no selected row

Return

whether the control has a new row

Examples

The examples in this section will use an existing grid dialog resource DLL that gets installed with Origin C's Developer Kit. The DLL can be found in this zip file, under \Dialog Builder\GridDLG sub-folder.

#include <..\Originlab\DialogEx.h>
#include "GridDLGRes.h"// resource DLL header

class GridCtrlDLG : public ResizeDialog
{
public:
        GridCtrlDLG() : ResizeDialog(IDD_GRID_DLG, "GridDLG")
        {
        }

        int DoModal(HWND hParent = NULL)
        {
                InitMsgMap();
                int nRet = ResizeDialog::DoModal(hParent);
                return nRet;
        }

protected:
///----------------- Message Map ----------------
        EVENTS_BEGIN
                ON_INIT(OnInitDialog)
                ON_SIZE(OnDlgResize)
                ON_GETMINMAXINFO(OnMinMaxInfo)
                ON_CONTEXTMENU(OnShowMenu)
        EVENTS_END
///----------------------------------------------
        
        BOOL OnInitDialog()
        {
                ResizeDialog::OnInitDialog(0, "Grid Dialog");
                
                //initialize grid control
                m_GridCtrl.Init(IDC_GRID, *this);
                m_GridCtrl.SetupRowsCols( 1, 0, 5, 1 );
                
                vector<string> vsItems = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
                m_GridCtrl.CheckExpandRows( vsItems.GetSize() - m_GridCtrl.GetRowOffset() );
                m_GridCtrl.SetCells(vsItems, 0);
                
                //move grid control to top left
                RECT rrList;    
                rrList.top = rrList.left = GetControlGap();
                m_GridCtrl.MoveWindow(rrList);
                
                SetInitReady();
                return TRUE;
        }     

        BOOL OnDlgResize(int nType, int cx, int cy)
        {
                if(!IsInitReady())
                        return TRUE;          
                
                uint nButtonIDs[] = {IDOK, 0};
                ArrangeMainItemAndControls(nButtonIDs, IDC_GRID, NULL, false);
                return TRUE;
                
        }
        
        BOOL OnShowMenu(UINT nResIDCtrl, int nx, int ny)
        {
                if(IDC_GRID == nResIDCtrl)
                {
                        int nRow, nCol;
                        m_GridCtrl.GetMouseCell(nRow, nCol);
                        
                        UINT nFlags = m_GridCtrl.IsInGrid(nRow, nCol) && !m_GridCtrl.IsColHeadingRow(nRow) && m_GridCtrl.HasRows();
                        if(nFlags)
                                        m_GridCtrl.SetIsSelected(nRow, true);
                        
                        Menu menuRows;
                        menuRows.Add("Add Row", 1, MF_STRING);
                        menuRows.Add("Insert Row", 2, nFlags ? MF_ENABLED : MF_DISABLED | MF_GRAYED);
                        menuRows.Add("Delete Row", 3, nFlags ? MF_ENABLED : MF_DISABLED | MF_GRAYED);
                        
                        int nCmd = 0;
                        menuRows.TrackPopupMenu(0, nx, ny, GetSafeHwnd(), &nCmd);
                        switch(nCmd)
                        {
                        case 1:
                                m_GridCtrl.AddOneRow();
                                break;
                                
                        case 2:
                                m_GridCtrl.InsertRow(false);
                                break;
                                
                        case 3:
                                m_GridCtrl.DeleteRow(nRow);
                                break;
                        }
                }
                return TRUE;
        }
        
private:
        GridControl         m_GridCtrl;
};

bool OpenGridDLG()    
{
        GridCtrlDLG myDlg;
        myDlg.DoModal( GetWindow() );
        return true;
}

Remark

See Also

GridControl::AddOneRow
GridControl::DeleteRow

Header to Included

GridControl.h