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 » Thu Jan 08, 2009 9:16 am

Обрабатываю 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 » Thu Jan 08, 2009 10:23 am

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

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 » Thu Jan 08, 2009 11:45 am

А потому что нужно было не ленится и обновиться на 2.8.9 :evil:

User avatar
T-Rex
Moderator
Moderator
Posts: 1195
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Thu Jan 08, 2009 4:53 pm

Может есть смысл посмотреть реализацию 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 » Fri Jan 09, 2009 8:00 am

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

Я просто сидел на 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 » Fri Jan 09, 2009 10:38 pm

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

Code: Select all

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

Post Reply