Как обновить одну строку в wxGrid?

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
martynov77
Experienced Solver
Experienced Solver
Posts: 74
Joined: Wed Apr 28, 2010 9:41 am

Как обновить одну строку в wxGrid?

Post by martynov77 »

Здравствуйте!
Мне нужно обновить одну строку в гриде (я меняю цвета фона для ячеек строки). Следующий код не работает правильно:

Code: Select all

    wxRect calcRowRect(wxGrid *pGrid, int row, int numCols)
       {
        wxRect fullRect  = pGrid->CellToRect(row, 0 ); // it is also left rect
        wxRect rightRect = pGrid->CellToRect(row, numCols ? numCols-1 : 0 );
        fullRect.width  = (rightRect.x + rightRect.width) - fullRect.x;
        //fullRect.height = pGrid->GetRowSize(row);
        return fullRect;
       }

   ...
     wxRect fullRect  = calcRowRect(pGrid, rowNum, numCols);
     pGrid->Refresh(true,&fullRect);
Выглядит так, будто rect задается рандомно ;(
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Как обновить одну строку в wxGrid?

Post by Mojo »

можно поменять цвет строки затем весь грид обновить путем вызова форсрефреш
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Как обновить одну строку в wxGrid?

Post by Mojo »

или как вариант вырезать строку и вставить новую
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
martynov77
Experienced Solver
Experienced Solver
Posts: 74
Joined: Wed Apr 28, 2010 9:41 am

Re: Как обновить одну строку в wxGrid?

Post by martynov77 »

Mojo wrote:можно поменять цвет строки затем весь грид обновить путем вызова форсрефреш
Не подходит. Это я попробовал сразу, довольно противно мигает. Потому и хочу обновить только изменяющуюся строку.
martynov77
Experienced Solver
Experienced Solver
Posts: 74
Joined: Wed Apr 28, 2010 9:41 am

Re: Как обновить одну строку в wxGrid?

Post by martynov77 »

Mojo wrote:или как вариант вырезать строку и вставить новую
У меня в принципе грид вроде виртуального по-моему - я по запросам выдаю то, что должно отображатся в ячейках (деталей сразу не дам, но если поможет - уточню).
Вырезать в этом случае - имхо это сказать гриду, что у него ячеек стало меньше, и он начнет по новой меня запрашивать, что в них отображать. Но мое внутреннее представление думает-то по другому, что ячеек столько же. Видится гемор с адаптацией под такой вариант. Да и та часть, которая ниже нужной строки, все равно будет мигать. Пока весь грид Refresh'у, но хочу покрасивше сделать.
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7477
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Как обновить одну строку в wxGrid?

Post by ONEEYEMAN »

Privet,
Posmotri kak eto sdelano v samplah (primerah).

Neugeli ne rabotaet?

Spasibo.
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Как обновить одну строку в wxGrid?

Post by Mojo »

Пример, можно не смотреть, там обновляется весь грид grid->Refresh(); а не строка.
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Post Reply