steffi123 Ответов: 2

Как получить количество элементов в cgridctrl?


Привет,
В CGridCtrl я изначально установил 16 в SetRowCount().
Я динамически заполняю строку при нажатии кнопки Добавить.
Теперь я заполнил только 3 строки в CGridctrl.
OnOK() мне нужно получить количество заполненных строк в CGridCtrl.
В MFC в cListctrl у нас есть функция GetItemCount() для получения количества заполненных элементов. аналогично в CGridCtrl как получить номер заполненной строки?

Что я уже пробовал:

Я исследовал, но не смог найти для него функции.

2 Ответов

Рейтинг:
2

Jochen Arndt

Вы можете отслеживать его в своем коде при настройке данных с помощью переменной-члена класса.

Или вы можете проверить, не пусты ли определенные столбцы(что требует знания типа столбцов и того, что эти столбцы всегда не пусты после установки при использовании виртуального режима).

Непроверенный пример:

int CMyClass::GetUsedRows() const
{
    int usedRows = 0;
    for (int i = 0; i < m_gridCtrl.GetRowCount(), i++)
    {
        const CGridCellBase* pCell = m_gridCtrl.GetCell(i, 0);
        if (pCell)
        {
            // When not using virtual mode, pCell is NULL when no data has been set
            // Otherwise assumes column 0 is text and that it is always a non empty string
            if (!m_gridCtrl.GetVirtualMode() || (pCell->GetText() && *pCell->GetText()))
                usedRows++;
        }
    }
    return usedRows;
}


Рейтинг:
1

Richard MacCutchan

Вы должны разместить свой вопрос на форуме в конце статьи, чтобы автор его увидел.