wxEVT_GRID_SELECT_CELL и Grid Cursor

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

wxEVT_GRID_SELECT_CELL и Grid Cursor

Post by borr_1 »

Обрабатываю wxEVT_GRID_SELECT_CELL для wxGrid, что нужно сделать чтобы после выбора ячейки курсор перешел в эту ячейку?

Code: Select all

void SumOnYearView::OnmGridCellSelect(wxGridEvent& event)
{
  curVal = mGrid->GetCellValue(event.GetRow(), event.GetCol());
  //mGrid->SetGridCursor(event.GetRow(), event.GetCol());//Нельзя тогда снова вызывается wxEVT_GRID_SELECT_CELL
  //event.Skip();
}
Курсор остается в ячейке (0,0)
Ranger
Knows some wx things
Knows some wx things
Posts: 30
Joined: Sun Jun 29, 2008 1:19 pm

Post by Ranger »

А чем так не подходит?

Code: Select all

void SumOnYearView::OnmGridCellSelect(wxGridEvent& event)
{
  curVal = mGrid->GetCellValue(event.GetRow(), event.GetCol());
  event.Skip();
} 
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 »

А потому что нужно было не ленится и обновиться на 2.8.9 :evil:
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex »

Может есть смысл посмотреть реализацию SetGridCursor и сделать так же но без вызова события? Или отсабкласиться от грида и сделать версию SetGridCursor с необязательным параметром булевым, который отвечает за то, будет ли файриться ивэнт или нет?
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 »

Рекс, проблема решена.

Я просто сидел на 2.8.6 там сточка event.Skip(); не решала проблему и wxEVT_GRID_SELECT_CELL вызывался снова. Это был баг. Обновился до 2.8.9 теперь Skip эвента в функции, как это показал ранжер решило проблему.

И еще одно Connect надо прописывать так

Code: Select all

Grid->Connect(wxID_ANY, wxEVT_GRID_SELECT_CELL,
(wxObjectEventFunction)&SumOnYearView::OnGridCellSelect, 0, this);
А не так как wxSmith предлагает

Code: Select all

Connect(ID_GRID1, wxEVT_GRID_SELECT_CELL,
(wxObjectEventFunction)&SumOnYearView::OnGridCellSelect);
Вот тогда и получется эта лажа Skip на event не отрабатывает событие не сбрасывается, а повторяется сново - идет зацикливание... версия wxWidgets тут не при чем. Опять я на те же грабли :?
Ranger
Knows some wx things
Knows some wx things
Posts: 30
Joined: Sun Jun 29, 2008 1:19 pm

Post by Ranger »

И еще одно Connect надо прописывать так
можно так:

Code: Select all

Connect(ID_GRID1, 
        wxEVT_GRID_SELECT_CELL,
        wxGridEventHandler(SumOnYearView::OnGridCellSelect);
Post Reply