Page 1 of 1
Как программно редактировать яч
Posted: Tue Jun 01, 2010 2:36 pm
by martynov77
Здравствуйте!
Не смог разобраться, как программно перейти в режим редактирования ячейки wxGrid'а, может подскадете?
Posted: Tue Jun 01, 2010 4:07 pm
by T-Rex
Ммм.. документации под рукой нету, но если прям перейти, то ну навскидку вроде было АПИ для получения координат ячейки и потом послать маусевент с даблкликом или с кликом. А так - смотреть сорцы грида и в них - как происходит отображение целл едитора. Ну и сделать аналогично.
Re: Как программно редактировать
Posted: Tue Jun 01, 2010 4:47 pm
by tan
Привет!
martynov77 wrote:
Не смог разобраться, как программно перейти в режим редактирования ячейки wxGrid'а, может подскадете?
Ну, например, так:
Code: Select all
grid->SetGridCursor(row, col);
grid->EnableCellEditControl();
Posted: Wed Jun 02, 2010 10:22 am
by martynov77
Code: Select all
void OnKeyDown(wxKeyEvent& event)
{
...
SetGridCursor( (int)(newCoverageIdx+1), 0 );
SetFocus();
ShowCellEditControl();
//wxGridCellEditor *pCellEditor = GetCellEditor((int)(newCoverageIdx+1), 0);
//if (pCellEditor) pCellEditor->BeginEdit( (int)(newCoverageIdx+1), 0, this );
...
Не работает. курсор на ячейку устанавливается, но в режим редактирования не входит.
Если использовать закоментированное, то валится с переполнением стека.
Posted: Wed Jun 02, 2010 10:45 am
by tan
Ну, если ты юзаешь это из низкоуровневого хандлера самого грида, то тут всякие пересечения могут быть
Из внешнего хандлера мой код точно работает. А так надо разбираться, что именно происходит, в каком состоянии сам грид в этот момент пребывает, отрабатывает ли дефолтный хандлер (Skip()) и т.д.
BTW, OnKeyDown() какого класса метод?
Posted: Wed Jun 02, 2010 12:47 pm
by martynov77
Класс-наследник wxGrid'а.
По нажатию DEL хочу удалять строчку под курсором (работает), по нажатию INS хочу добавлять строчку и сразу переходить к редактированию ее содержимого.
По нажатию прочих клавиш делаю event.Skip().
Posted: Wed Jun 02, 2010 1:14 pm
by martynov77
Заменил ShowCellEditControl на EnableCellEditControl - заработало.
Всем спасибо за помощь.
Posted: Wed Jun 02, 2010 2:54 pm
by tan
martynov77 wrote:Заменил ShowCellEditControl на EnableCellEditControl - заработало.
Не понял, я ж так в своем посте и писал
EnableCellEditControl() ?
А спасибо не булькает
Posted: Wed Jun 02, 2010 4:13 pm
by T-Rex
А спасибо не булькает
С каждым днем находятся все новые и новые способы монетизировать свои знания wxWidgets